[INFO] cloning repository https://github.com/timglabisch/tablemacro [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/timglabisch/tablemacro" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftimglabisch%2Ftablemacro", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftimglabisch%2Ftablemacro'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c2f628ce094e1717a9a0ab4ae07fa2a180805595 [INFO] checking timglabisch/tablemacro against master#339e19697a39a78f4d669c217b7d21109215de41 for pr-81213 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftimglabisch%2Ftablemacro" "/workspace/builds/worker-10/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-10/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/timglabisch/tablemacro on toolchain 339e19697a39a78f4d669c217b7d21109215de41 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+339e19697a39a78f4d669c217b7d21109215de41" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/timglabisch/tablemacro [INFO] finished tweaking git repo https://github.com/timglabisch/tablemacro [INFO] tweaked toml for git repo https://github.com/timglabisch/tablemacro written to /workspace/builds/worker-10/source/Cargo.toml [INFO] crate git repo https://github.com/timglabisch/tablemacro already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+339e19697a39a78f4d669c217b7d21109215de41" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:21f1ed92105a0ef9b0d27ad8bdeb7f36f9f01ac17fffe3a3f3dc5241fc25d8f4" "/opt/rustwide/cargo-home/bin/cargo" "+339e19697a39a78f4d669c217b7d21109215de41" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 45d01af4c2a64dd7d4f498a59bf3f345ab1fc4a0136abda1e7536c23c8196010 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "45d01af4c2a64dd7d4f498a59bf3f345ab1fc4a0136abda1e7536c23c8196010", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "45d01af4c2a64dd7d4f498a59bf3f345ab1fc4a0136abda1e7536c23c8196010", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "45d01af4c2a64dd7d4f498a59bf3f345ab1fc4a0136abda1e7536c23c8196010", kill_on_drop: false }` [INFO] [stdout] 45d01af4c2a64dd7d4f498a59bf3f345ab1fc4a0136abda1e7536c23c8196010 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:21f1ed92105a0ef9b0d27ad8bdeb7f36f9f01ac17fffe3a3f3dc5241fc25d8f4" "/opt/rustwide/cargo-home/bin/cargo" "+339e19697a39a78f4d669c217b7d21109215de41" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 19a797917a1642b00a49f182f0563ee844847a773128826a777bb2181ecb8853 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "19a797917a1642b00a49f182f0563ee844847a773128826a777bb2181ecb8853", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.82 [INFO] [stderr] Compiling syn v1.0.58 [INFO] [stderr] Compiling spin v0.5.2 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling once_cell v1.5.2 [INFO] [stderr] Compiling libm v0.2.1 [INFO] [stderr] Compiling slab v0.4.2 [INFO] [stderr] Compiling futures-core v0.3.9 [INFO] [stderr] Compiling untrusted v0.7.1 [INFO] [stderr] Compiling getrandom v0.2.1 [INFO] [stderr] Compiling build_const v0.2.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.10 [INFO] [stderr] Compiling futures-sink v0.3.9 [INFO] [stderr] Compiling regex-syntax v0.6.22 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Compiling pin-project-lite v0.2.3 [INFO] [stderr] Compiling opaque-debug v0.3.0 [INFO] [stderr] Compiling bytes v0.5.6 [INFO] [stderr] Compiling funty v1.1.0 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling wyz v0.2.0 [INFO] [stderr] Compiling arrayvec v0.5.2 [INFO] [stderr] Compiling futures-io v0.3.9 [INFO] [stderr] Compiling tap v1.0.0 [INFO] [stderr] Compiling pin-project-lite v0.1.11 [INFO] [stderr] Compiling cpuid-bool v0.1.2 [INFO] [stderr] Compiling itoa v0.4.7 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Compiling serde_json v1.0.61 [INFO] [stderr] Compiling base64 v0.13.0 [INFO] [stderr] Compiling ahash v0.4.7 [INFO] [stderr] Compiling subtle v2.4.0 [INFO] [stderr] Checking byteorder v1.4.2 [INFO] [stderr] Compiling unicode_categories v0.1.1 [INFO] [stderr] Compiling whoami v1.0.3 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Compiling unicode-segmentation v1.7.1 [INFO] [stderr] Compiling hex v0.4.2 [INFO] [stderr] Compiling dotenv v0.15.0 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Compiling num-iter v0.1.42 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling crossbeam-utils v0.8.1 [INFO] [stderr] Compiling nom v6.0.1 [INFO] [stderr] Compiling ahash v0.6.2 [INFO] [stderr] Compiling num-bigint v0.3.1 [INFO] [stderr] Checking futures-task v0.3.9 [INFO] [stderr] Compiling num-bigint-dig v0.6.1 [INFO] [stderr] Compiling tinyvec v1.1.0 [INFO] [stderr] Compiling instant v0.1.9 [INFO] [stderr] Compiling futures-channel v0.3.9 [INFO] [stderr] Compiling crc v1.8.1 [INFO] [stderr] Compiling form_urlencoded v1.0.0 [INFO] [stderr] Compiling lock_api v0.4.2 [INFO] [stderr] Compiling hashbrown v0.9.1 [INFO] [stderr] Compiling memchr v2.3.4 [INFO] [stderr] Compiling typenum v1.12.0 [INFO] [stderr] Checking thread_local v1.1.0 [INFO] [stderr] Compiling radium v0.5.3 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling proc-macro-nested v0.1.6 [INFO] [stderr] Compiling heck v0.3.2 [INFO] [stderr] Checking bitvec v0.19.4 [INFO] [stderr] Compiling lexical-core v0.7.4 [INFO] [stderr] Checking stringprep v0.1.2 [INFO] [stderr] Compiling aho-corasick v0.7.15 [INFO] [stderr] Compiling hashlink v0.6.0 [INFO] [stderr] Checking url v2.2.0 [INFO] [stderr] Compiling unicode-normalization v0.1.16 [INFO] [stderr] Compiling ring v0.16.19 [INFO] [stderr] Compiling iovec v0.1.4 [INFO] [stderr] Compiling net2 v0.2.37 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling signal-hook-registry v1.3.0 [INFO] [stderr] Compiling parking_lot_core v0.8.2 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Compiling crossbeam-channel v0.5.0 [INFO] [stderr] Compiling crossbeam-queue v0.3.1 [INFO] [stderr] Compiling atoi v0.4.0 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling mio v0.6.23 [INFO] [stderr] Compiling idna v0.2.0 [INFO] [stderr] Checking regex v1.4.3 [INFO] [stderr] Compiling parking_lot v0.11.1 [INFO] [stderr] Checking sha2 v0.9.2 [INFO] [stderr] Checking sha-1 v0.9.2 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling chrono v0.4.19 [INFO] [stderr] Checking webpki v0.21.4 [INFO] [stderr] Checking sct v0.6.0 [INFO] [stderr] Compiling mio-uds v0.6.8 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Checking pem v0.8.2 [INFO] [stderr] Checking webpki-roots v0.21.0 [INFO] [stderr] Checking rustls v0.18.1 [INFO] [stderr] Checking simple_asn1 v0.4.1 [INFO] [stderr] Compiling synstructure v0.12.4 [INFO] [stderr] Compiling pest_generator v2.1.3 [INFO] [stderr] Checking sqlformat v0.1.5 [INFO] [stderr] Compiling serde_derive v1.0.118 [INFO] [stderr] Compiling zeroize_derive v1.0.1 [INFO] [stderr] Compiling tokio-macros v0.2.6 [INFO] [stderr] Compiling thiserror-impl v1.0.23 [INFO] [stderr] Compiling futures-macro v0.3.9 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Compiling semver-parser v0.10.0 [INFO] [stderr] Compiling zeroize v1.2.0 [INFO] [stderr] Compiling tokio v0.2.24 [INFO] [stderr] Compiling futures-util v0.3.9 [INFO] [stderr] Compiling thiserror v1.0.23 [INFO] [stderr] Compiling futures-executor v0.3.9 [INFO] [stderr] Compiling futures v0.3.9 [INFO] [stderr] Compiling serde v1.0.118 [INFO] [stderr] Checking tokio-rustls v0.14.1 [INFO] [stderr] Checking sqlx-rt v0.2.0 [INFO] [stderr] Compiling semver v0.11.0 [INFO] [stderr] Checking rsa v0.3.0 [INFO] [stderr] Checking sqlx-core v0.4.2 [INFO] [stderr] Compiling cargo_metadata v0.12.1 [INFO] [stderr] Compiling sqlx-macros v0.4.2 [INFO] [stderr] Checking sqlx v0.4.2 [INFO] [stderr] Checking tablemacro v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] note: trace_macro [INFO] [stdout] --> src/main.rs:366:5 [INFO] [stdout] | [INFO] [stdout] 366 | / table!( [INFO] [stdout] 367 | | #[table = "bar_table"] [INFO] [stdout] 368 | | struct Foo { [INFO] [stdout] 369 | | #[pk, column = "foo column",] [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] 373 | | ); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: expanding `table! { #[table = "bar_table"] struct Foo [INFO] [stdout] { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, } }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [struct Foo { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], [INFO] [stdout] table_name = "bar_table", [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [struct Foo { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], [INFO] [stdout] table_name = "bar_table", }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [#[pk, column = "foo column",] foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [#[pk, column = "foo column",] foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [pk, column = "foo column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_annotation! { annotation_tokens = [pk, column = "foo column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [column = "foo column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_annotation! { annotation_tokens = [column = "foo column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, tokens = [INFO] [stdout] [foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_annotation! { annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, tokens = [INFO] [stdout] [foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [foo1 : u32, foo2 : u32,], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] } ;` [INFO] [stdout] = note: expanding `_columns! { tokens = [foo1 : u32, foo2 : u32,], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] current_column = [INFO] [stdout] { [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = "foo column", [INFO] [stdout] }, tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { current_column = [INFO] [stdout] { type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = [INFO] [stdout] "foo column", [INFO] [stdout] },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", },], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] current_column = [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", }, tokens [INFO] [stdout] = [], table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = [INFO] [stdout] "foo column", [INFO] [stdout] },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { current_column = [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", }, tokens = [INFO] [stdout] [], table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", },], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [], table = { struct_name = Foo, table_name = "bar_table", }, [INFO] [stdout] columns = [INFO] [stdout] [{ [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = [INFO] [stdout] "foo column", [INFO] [stdout] }, { type_name = foo2, ty = u32, primary_key = false, column = "", },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [], table = { struct_name = Foo, table_name = "bar_table", }, columns [INFO] [stdout] = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", },], }` [INFO] [stdout] = note: to `_table_impl ! [INFO] [stdout] (table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", },],) ;` [INFO] [stdout] = note: expanding `_table_impl! { table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", },], }` [INFO] [stdout] = note: to `mod table_shadow [INFO] [stdout] { pub struct Foo { pub(crate) foo1 : u32, pub(crate) foo2 : u32, } } pub [INFO] [stdout] struct Foo [INFO] [stdout] { _shadow : Option < table_shadow :: Foo >, foo1 : u32, foo2 : u32, } impl Foo [INFO] [stdout] { [INFO] [stdout] pub fn get_pks() -> Vec < & 'static str > [INFO] [stdout] { [INFO] [stdout] let mut pk = vec ! [] ; $crate :: static_cond ! [INFO] [stdout] { if true == true { pk . push("foo column") ; } else { } } $crate :: [INFO] [stdout] static_cond ! { if false == true { pk . push("") ; } else { } } ; pk [INFO] [stdout] } pub fn get_columns() -> & 'static [& 'static str] [INFO] [stdout] { & ["foo column", "",] } async fn execute_update_query < 'a > [INFO] [stdout] (& 'a self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >, sql : & [INFO] [stdout] str, updates : & Vec < Update < 'a >>) -> Result < :: sqlx :: mysql :: [INFO] [stdout] MySqlDone, :: sqlx :: Error > [INFO] [stdout] { [INFO] [stdout] let mut q = :: sqlx :: query :: < :: sqlx :: mysql :: MySql > (sql) ; [INFO] [stdout] for update in updates { q = q . bind(update . new_value . clone()) ; } [INFO] [stdout] $crate :: static_cond ! [INFO] [stdout] { if true == true { q = q . bind(self . foo1 . clone()) ; } } $crate [INFO] [stdout] :: static_cond ! [INFO] [stdout] { if false == true { q = q . bind(self . foo2 . clone()) ; } } ; let [INFO] [stdout] mut conn : :: sqlx :: pool :: PoolConnection < :: sqlx :: mysql :: [INFO] [stdout] MySql > = pool . acquire() . await . expect("nooo") ; q . [INFO] [stdout] execute(& mut conn) . await [INFO] [stdout] } async fn [INFO] [stdout] build_update_query(& self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: [INFO] [stdout] MySql >) -> Option < Result < :: sqlx :: mysql :: [INFO] [stdout] MySqlDone, :: sqlx :: Error >> where u32 : for < 'x > :: sqlx :: Encode < [INFO] [stdout] 'x, :: sqlx :: mysql :: MySql >, u32 : :: sqlx :: Type < :: sqlx :: mysql [INFO] [stdout] :: MySql >, u32 : for < 'x > :: sqlx :: Encode < 'x, :: sqlx :: mysql :: [INFO] [stdout] MySql >, u32 : :: sqlx :: Type < :: sqlx :: mysql :: MySql >, [INFO] [stdout] { [INFO] [stdout] let updates = self . updates() ; if updates . len() == 0 [INFO] [stdout] { return None ; } let mut sql = String :: new() ; sql . [INFO] [stdout] push_str("UPDATE ") ; sql . push_str(stringify ! ("bar_table")) ; sql [INFO] [stdout] . push_str(" SET ") ; sql . [INFO] [stdout] push_str(& [INFO] [stdout] (& updates . iter() . [INFO] [stdout] map(| u | format ! ("{} = ?", u . column)) . collect :: < [INFO] [stdout] Vec < _ >> () . join(", "))) ; sql . push_str("WHERE ") ; [INFO] [stdout] $crate :: static_cond ! [INFO] [stdout] { [INFO] [stdout] if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } [INFO] [stdout] } $crate :: static_cond ! [INFO] [stdout] { [INFO] [stdout] if false == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } [INFO] [stdout] } ; sql . push_str(" 1 = 1 ") ; [INFO] [stdout] Some(self . execute_update_query(pool, & sql, & updates) . await) [INFO] [stdout] } [INFO] [stdout] } impl CalcUpdats for Foo [INFO] [stdout] { [INFO] [stdout] fn updates(& self) -> Vec < Update > [INFO] [stdout] { [INFO] [stdout] let mut buf = vec ! [] ; match & self . _shadow [INFO] [stdout] { [INFO] [stdout] Some(shadow) if & shadow . foo1 == & self . foo1 => { }, _ => [INFO] [stdout] { [INFO] [stdout] buf . [INFO] [stdout] push(Update [INFO] [stdout] { [INFO] [stdout] field : stringify ! (foo1), column : stringify ! [INFO] [stdout] ($ column_name), new_value : & self . foo1, old_value [INFO] [stdout] : match & self . _shadow [INFO] [stdout] { None => None, Some(s) => Some(& s . foo1) }, [INFO] [stdout] }) ; [INFO] [stdout] } [INFO] [stdout] } ; match & self . _shadow [INFO] [stdout] { [INFO] [stdout] Some(shadow) if & shadow . foo2 == & self . foo2 => { }, _ => [INFO] [stdout] { [INFO] [stdout] buf . [INFO] [stdout] push(Update [INFO] [stdout] { [INFO] [stdout] field : stringify ! (foo2), column : stringify ! [INFO] [stdout] ($ column_name), new_value : & self . foo2, old_value [INFO] [stdout] : match & self . _shadow [INFO] [stdout] { None => None, Some(s) => Some(& s . foo2) }, [INFO] [stdout] }) ; [INFO] [stdout] } [INFO] [stdout] } ; buf [INFO] [stdout] } [INFO] [stdout] }` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __export :: force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `force_expr! { $crate :: vec :: Vec :: new() }` [INFO] [stdout] = note: to `::alloc::vec::Vec::new()` [INFO] [stdout] = note: expanding `static_cond! { if true == true { pk . push("foo column") ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! (@ go true true { pk . push("foo column") ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { pk . push("foo column") ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { (true true) => { pk . push("foo column") ; } ; (true true) => { } } [INFO] [stdout] __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `pk . push("foo column") ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true { pk . push("") ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! (@ go false true { pk . push("") ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go false true { pk . push("") ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { (false false) => { pk . push("") ; } ; (false true) => { } } __static_cond ! [INFO] [stdout] (false true) ;` [INFO] [stdout] = note: expanding `__static_cond! { false true }` [INFO] [stdout] = note: to `` [INFO] [stdout] = note: expanding `static_cond! { if true == true { q = q . bind(self . foo1 . clone()) ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if true == true { q = q . bind(self . foo1 . clone()) ; } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if true == true { q = q . bind(self . foo1 . clone()) ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go true true { q = q . bind(self . foo1 . clone()) ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { q = q . bind(self . foo1 . clone()) ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (true true) => { q = q . bind(self . foo1 . clone()) ; } ; (true true) => [INFO] [stdout] { } [INFO] [stdout] } __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `q = q . bind(self . foo1 . clone()) ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true { q = q . bind(self . foo2 . clone()) ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if false == true { q = q . bind(self . foo2 . clone()) ; } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true { q = q . bind(self . foo2 . clone()) ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go false true { q = q . bind(self . foo2 . clone()) ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go false true { q = q . bind(self . foo2 . clone()) ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (false false) => { q = q . bind(self . foo2 . clone()) ; } ; (false true) [INFO] [stdout] => { } [INFO] [stdout] } __static_cond ! (false true) ;` [INFO] [stdout] = note: expanding `__static_cond! { false true }` [INFO] [stdout] = note: to `` [INFO] [stdout] = note: expanding `format! { "{} = ?", u . column }` [INFO] [stdout] = note: to `{ [INFO] [stdout] let res = $crate :: fmt :: [INFO] [stdout] format($crate :: __export :: format_args ! ("{} = ?", u . column)) ; res [INFO] [stdout] }` [INFO] [stdout] = note: expanding `static_cond! { if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go true true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (true true) => [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } ; (true true) => { } [INFO] [stdout] } __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if false == true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go false true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go false true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (false false) => [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } ; (false true) => { } [INFO] [stdout] } __static_cond ! (false true) ;` [INFO] [stdout] = note: expanding `__static_cond! { false true }` [INFO] [stdout] = note: to `` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __export :: force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `force_expr! { $crate :: vec :: Vec :: new() }` [INFO] [stdout] = note: to `::alloc::vec::Vec::new()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] note: trace_macro [INFO] [stdout] --> src/main.rs:366:5 [INFO] [stdout] | [INFO] [stdout] 366 | / table!( [INFO] [stdout] 367 | | #[table = "bar_table"] [INFO] [stdout] 368 | | struct Foo { [INFO] [stdout] 369 | | #[pk, column = "foo column",] [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] 373 | | ); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: expanding `table! { #[table = "bar_table"] struct Foo [INFO] [stdout] { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, } }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [struct Foo { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], [INFO] [stdout] table_name = "bar_table", [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [struct Foo { #[pk, column = "foo column",] foo1 : u32, foo2 : u32, }], [INFO] [stdout] table_name = "bar_table", }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [#[pk, column = "foo column",] foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [#[pk, column = "foo column",] foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [pk, column = "foo column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_annotation! { annotation_tokens = [pk, column = "foo column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [column = "foo column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_annotation! { annotation_tokens = [column = "foo column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, tokens = [foo1 : u32, foo2 : u32,], [INFO] [stdout] table = { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, tokens = [INFO] [stdout] [foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_annotation! { annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, tokens = [INFO] [stdout] [foo1 : u32, foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [foo1 : u32, foo2 : u32,], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] } ;` [INFO] [stdout] = note: expanding `_columns! { tokens = [foo1 : u32, foo2 : u32,], annotations = [INFO] [stdout] { primary_key = true, column = "foo column", }, table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] current_column = [INFO] [stdout] { [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = "foo column", [INFO] [stdout] }, tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { current_column = [INFO] [stdout] { type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = [INFO] [stdout] "foo column", [INFO] [stdout] },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", },], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] current_column = [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", }, tokens [INFO] [stdout] = [], table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = [INFO] [stdout] "foo column", [INFO] [stdout] },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { current_column = [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", }, tokens = [INFO] [stdout] [], table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", },], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [], table = { struct_name = Foo, table_name = "bar_table", }, [INFO] [stdout] columns = [INFO] [stdout] [{ [INFO] [stdout] type_name = foo1, ty = u32, primary_key = true, column = [INFO] [stdout] "foo column", [INFO] [stdout] }, { type_name = foo2, ty = u32, primary_key = false, column = "", },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [], table = { struct_name = Foo, table_name = "bar_table", }, columns [INFO] [stdout] = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", },], }` [INFO] [stdout] = note: to `_table_impl ! [INFO] [stdout] (table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", },],) ;` [INFO] [stdout] = note: expanding `_table_impl! { table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [{ type_name = foo1, ty = u32, primary_key = true, column = "foo column", }, [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = false, column = "", },], }` [INFO] [stdout] = note: to `mod table_shadow [INFO] [stdout] { pub struct Foo { pub(crate) foo1 : u32, pub(crate) foo2 : u32, } } pub [INFO] [stdout] struct Foo [INFO] [stdout] { _shadow : Option < table_shadow :: Foo >, foo1 : u32, foo2 : u32, } impl Foo [INFO] [stdout] { [INFO] [stdout] pub fn get_pks() -> Vec < & 'static str > [INFO] [stdout] { [INFO] [stdout] let mut pk = vec ! [] ; $crate :: static_cond ! [INFO] [stdout] { if true == true { pk . push("foo column") ; } else { } } $crate :: [INFO] [stdout] static_cond ! { if false == true { pk . push("") ; } else { } } ; pk [INFO] [stdout] } pub fn get_columns() -> & 'static [& 'static str] [INFO] [stdout] { & ["foo column", "",] } async fn execute_update_query < 'a > [INFO] [stdout] (& 'a self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >, sql : & [INFO] [stdout] str, updates : & Vec < Update < 'a >>) -> Result < :: sqlx :: mysql :: [INFO] [stdout] MySqlDone, :: sqlx :: Error > [INFO] [stdout] { [INFO] [stdout] let mut q = :: sqlx :: query :: < :: sqlx :: mysql :: MySql > (sql) ; [INFO] [stdout] for update in updates { q = q . bind(update . new_value . clone()) ; } [INFO] [stdout] $crate :: static_cond ! [INFO] [stdout] { if true == true { q = q . bind(self . foo1 . clone()) ; } } $crate [INFO] [stdout] :: static_cond ! [INFO] [stdout] { if false == true { q = q . bind(self . foo2 . clone()) ; } } ; let [INFO] [stdout] mut conn : :: sqlx :: pool :: PoolConnection < :: sqlx :: mysql :: [INFO] [stdout] MySql > = pool . acquire() . await . expect("nooo") ; q . [INFO] [stdout] execute(& mut conn) . await [INFO] [stdout] } async fn [INFO] [stdout] build_update_query(& self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: [INFO] [stdout] MySql >) -> Option < Result < :: sqlx :: mysql :: [INFO] [stdout] MySqlDone, :: sqlx :: Error >> where u32 : for < 'x > :: sqlx :: Encode < [INFO] [stdout] 'x, :: sqlx :: mysql :: MySql >, u32 : :: sqlx :: Type < :: sqlx :: mysql [INFO] [stdout] :: MySql >, u32 : for < 'x > :: sqlx :: Encode < 'x, :: sqlx :: mysql :: [INFO] [stdout] MySql >, u32 : :: sqlx :: Type < :: sqlx :: mysql :: MySql >, [INFO] [stdout] { [INFO] [stdout] let updates = self . updates() ; if updates . len() == 0 [INFO] [stdout] { return None ; } let mut sql = String :: new() ; sql . [INFO] [stdout] push_str("UPDATE ") ; sql . push_str(stringify ! ("bar_table")) ; sql [INFO] [stdout] . push_str(" SET ") ; sql . [INFO] [stdout] push_str(& [INFO] [stdout] (& updates . iter() . [INFO] [stdout] map(| u | format ! ("{} = ?", u . column)) . collect :: < [INFO] [stdout] Vec < _ >> () . join(", "))) ; sql . push_str("WHERE ") ; [INFO] [stdout] $crate :: static_cond ! [INFO] [stdout] { [INFO] [stdout] if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } [INFO] [stdout] } $crate :: static_cond ! [INFO] [stdout] { [INFO] [stdout] if false == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } [INFO] [stdout] } ; sql . push_str(" 1 = 1 ") ; [INFO] [stdout] Some(self . execute_update_query(pool, & sql, & updates) . await) [INFO] [stdout] } [INFO] [stdout] } impl CalcUpdats for Foo [INFO] [stdout] { [INFO] [stdout] fn updates(& self) -> Vec < Update > [INFO] [stdout] { [INFO] [stdout] let mut buf = vec ! [] ; match & self . _shadow [INFO] [stdout] { [INFO] [stdout] Some(shadow) if & shadow . foo1 == & self . foo1 => { }, _ => [INFO] [stdout] { [INFO] [stdout] buf . [INFO] [stdout] push(Update [INFO] [stdout] { [INFO] [stdout] field : stringify ! (foo1), column : stringify ! [INFO] [stdout] ($ column_name), new_value : & self . foo1, old_value [INFO] [stdout] : match & self . _shadow [INFO] [stdout] { None => None, Some(s) => Some(& s . foo1) }, [INFO] [stdout] }) ; [INFO] [stdout] } [INFO] [stdout] } ; match & self . _shadow [INFO] [stdout] { [INFO] [stdout] Some(shadow) if & shadow . foo2 == & self . foo2 => { }, _ => [INFO] [stdout] { [INFO] [stdout] buf . [INFO] [stdout] push(Update [INFO] [stdout] { [INFO] [stdout] field : stringify ! (foo2), column : stringify ! [INFO] [stdout] ($ column_name), new_value : & self . foo2, old_value [INFO] [stdout] : match & self . _shadow [INFO] [stdout] { None => None, Some(s) => Some(& s . foo2) }, [INFO] [stdout] }) ; [INFO] [stdout] } [INFO] [stdout] } ; buf [INFO] [stdout] } [INFO] [stdout] }` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __export :: force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `force_expr! { $crate :: vec :: Vec :: new() }` [INFO] [stdout] = note: to `::alloc::vec::Vec::new()` [INFO] [stdout] = note: expanding `static_cond! { if true == true { pk . push("foo column") ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! (@ go true true { pk . push("foo column") ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { pk . push("foo column") ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { (true true) => { pk . push("foo column") ; } ; (true true) => { } } [INFO] [stdout] __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `pk . push("foo column") ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true { pk . push("") ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! (@ go false true { pk . push("") ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go false true { pk . push("") ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { (false false) => { pk . push("") ; } ; (false true) => { } } __static_cond ! [INFO] [stdout] (false true) ;` [INFO] [stdout] = note: expanding `__static_cond! { false true }` [INFO] [stdout] = note: to `` [INFO] [stdout] = note: expanding `static_cond! { if true == true { q = q . bind(self . foo1 . clone()) ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if true == true { q = q . bind(self . foo1 . clone()) ; } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if true == true { q = q . bind(self . foo1 . clone()) ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go true true { q = q . bind(self . foo1 . clone()) ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { q = q . bind(self . foo1 . clone()) ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (true true) => { q = q . bind(self . foo1 . clone()) ; } ; (true true) => [INFO] [stdout] { } [INFO] [stdout] } __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `q = q . bind(self . foo1 . clone()) ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true { q = q . bind(self . foo2 . clone()) ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if false == true { q = q . bind(self . foo2 . clone()) ; } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true { q = q . bind(self . foo2 . clone()) ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go false true { q = q . bind(self . foo2 . clone()) ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go false true { q = q . bind(self . foo2 . clone()) ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (false false) => { q = q . bind(self . foo2 . clone()) ; } ; (false true) [INFO] [stdout] => { } [INFO] [stdout] } __static_cond ! (false true) ;` [INFO] [stdout] = note: expanding `__static_cond! { false true }` [INFO] [stdout] = note: to `` [INFO] [stdout] = note: expanding `format! { "{} = ?", u . column }` [INFO] [stdout] = note: to `{ [INFO] [stdout] let res = $crate :: fmt :: [INFO] [stdout] format($crate :: __export :: format_args ! ("{} = ?", u . column)) ; res [INFO] [stdout] }` [INFO] [stdout] = note: expanding `static_cond! { if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go true true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (true true) => [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } ; (true true) => { } [INFO] [stdout] } __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `sql . push_str("`") ; sql . push_str("foo column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if false == true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if false == true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go false true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go false true [INFO] [stdout] { sql . push_str("`") ; sql . push_str("") ; sql . push_str("` = ? AND ") ; } [INFO] [stdout] { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (false false) => [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("") ; sql . [INFO] [stdout] push_str("` = ? AND ") ; [INFO] [stdout] } ; (false true) => { } [INFO] [stdout] } __static_cond ! (false true) ;` [INFO] [stdout] = note: expanding `__static_cond! { false true }` [INFO] [stdout] = note: to `` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __export :: force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `force_expr! { $crate :: vec :: Vec :: new() }` [INFO] [stdout] = note: to `::alloc::vec::Vec::new()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_pks` [INFO] [stdout] --> src/main.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn get_pks() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | / table!( [INFO] [stdout] 367 | | #[table = "bar_table"] [INFO] [stdout] 368 | | struct Foo { [INFO] [stdout] 369 | | #[pk, column = "foo column",] [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] 373 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_columns` [INFO] [stdout] --> src/main.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | pub fn get_columns() -> &'static[&'static str] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | / table!( [INFO] [stdout] 367 | | #[table = "bar_table"] [INFO] [stdout] 368 | | struct Foo { [INFO] [stdout] 369 | | #[pk, column = "foo column",] [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] 373 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `execute_update_query` [INFO] [stdout] --> src/main.rs:257:13 [INFO] [stdout] | [INFO] [stdout] 257 | async fn execute_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, sql : &str, updates : &Vec>) -> Result<::sqlx::mysql::MySqlDone, ::sqlx::Error... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | / table!( [INFO] [stdout] 367 | | #[table = "bar_table"] [INFO] [stdout] 368 | | struct Foo { [INFO] [stdout] 369 | | #[pk, column = "foo column",] [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] 373 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `build_update_query` [INFO] [stdout] --> src/main.rs:278:13 [INFO] [stdout] | [INFO] [stdout] 278 | / async fn build_update_query(&self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] 279 | | -> Option> [INFO] [stdout] 280 | | where [INFO] [stdout] 281 | | $( [INFO] [stdout] ... | [INFO] [stdout] 321 | | ) [INFO] [stdout] 322 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] ... [INFO] [stdout] 366 | / table!( [INFO] [stdout] 367 | | #[table = "bar_table"] [INFO] [stdout] 368 | | struct Foo { [INFO] [stdout] 369 | | #[pk, column = "foo column",] [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] 373 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:240:21 [INFO] [stdout] | [INFO] [stdout] 240 | let mut pk = vec![]; [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] ... [INFO] [stdout] 384 | / table!( [INFO] [stdout] 385 | | #[table = "bar_table"] [INFO] [stdout] 386 | | struct Foo { [INFO] [stdout] 387 | | #[column = "foo column",] [INFO] [stdout] 388 | | foo1 : u32, [INFO] [stdout] 389 | | } [INFO] [stdout] 390 | | ); [INFO] [stdout] | |__________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_pks` [INFO] [stdout] --> src/main.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn get_pks() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | / table!( [INFO] [stdout] 385 | | #[table = "bar_table"] [INFO] [stdout] 386 | | struct Foo { [INFO] [stdout] 387 | | #[column = "foo column",] [INFO] [stdout] 388 | | foo1 : u32, [INFO] [stdout] 389 | | } [INFO] [stdout] 390 | | ); [INFO] [stdout] | |__________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_columns` [INFO] [stdout] --> src/main.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | pub fn get_columns() -> &'static[&'static str] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | / table!( [INFO] [stdout] 385 | | #[table = "bar_table"] [INFO] [stdout] 386 | | struct Foo { [INFO] [stdout] 387 | | #[column = "foo column",] [INFO] [stdout] 388 | | foo1 : u32, [INFO] [stdout] 389 | | } [INFO] [stdout] 390 | | ); [INFO] [stdout] | |__________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `execute_update_query` [INFO] [stdout] --> src/main.rs:257:13 [INFO] [stdout] | [INFO] [stdout] 257 | async fn execute_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, sql : &str, updates : &Vec>) -> Result<::sqlx::mysql::MySqlDone, ::sqlx::Error... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | / table!( [INFO] [stdout] 385 | | #[table = "bar_table"] [INFO] [stdout] 386 | | struct Foo { [INFO] [stdout] 387 | | #[column = "foo column",] [INFO] [stdout] 388 | | foo1 : u32, [INFO] [stdout] 389 | | } [INFO] [stdout] 390 | | ); [INFO] [stdout] | |__________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `build_update_query` [INFO] [stdout] --> src/main.rs:278:13 [INFO] [stdout] | [INFO] [stdout] 278 | / async fn build_update_query(&self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] 279 | | -> Option> [INFO] [stdout] 280 | | where [INFO] [stdout] 281 | | $( [INFO] [stdout] ... | [INFO] [stdout] 321 | | ) [INFO] [stdout] 322 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] ... [INFO] [stdout] 384 | / table!( [INFO] [stdout] 385 | | #[table = "bar_table"] [INFO] [stdout] 386 | | struct Foo { [INFO] [stdout] 387 | | #[column = "foo column",] [INFO] [stdout] 388 | | foo1 : u32, [INFO] [stdout] 389 | | } [INFO] [stdout] 390 | | ); [INFO] [stdout] | |__________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_pks` [INFO] [stdout] --> src/main.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn get_pks() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | / table!( [INFO] [stdout] 436 | | #[table = "xxxx"] [INFO] [stdout] 437 | | struct Xxx { [INFO] [stdout] 438 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 444 | | } [INFO] [stdout] 445 | | ); [INFO] [stdout] | |__________________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_columns` [INFO] [stdout] --> src/main.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | pub fn get_columns() -> &'static[&'static str] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | / table!( [INFO] [stdout] 436 | | #[table = "xxxx"] [INFO] [stdout] 437 | | struct Xxx { [INFO] [stdout] 438 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 444 | | } [INFO] [stdout] 445 | | ); [INFO] [stdout] | |__________________- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:454:17 [INFO] [stdout] | [INFO] [stdout] 454 | item.build_update_query(db_pool).await.expect("insert into db"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 8 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3m 34s [INFO] running `Command { std: "docker" "inspect" "19a797917a1642b00a49f182f0563ee844847a773128826a777bb2181ecb8853", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "19a797917a1642b00a49f182f0563ee844847a773128826a777bb2181ecb8853", kill_on_drop: false }` [INFO] [stdout] 19a797917a1642b00a49f182f0563ee844847a773128826a777bb2181ecb8853