[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] d9cc60495943027775c831f5032a313700dfa60c [INFO] checking timglabisch/tablemacro against master#9fa580b1175018b0a276b0bc68f9827a106f7260 for pr-82565 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftimglabisch%2Ftablemacro" "/workspace/builds/worker-3/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/timglabisch/tablemacro on toolchain 9fa580b1175018b0a276b0bc68f9827a106f7260 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", 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-3/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" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/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:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3c891861bca3d8b8f496ce7d20bd317e6dd014ba4648a9654ead0e38c25e941f [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" "3c891861bca3d8b8f496ce7d20bd317e6dd014ba4648a9654ead0e38c25e941f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3c891861bca3d8b8f496ce7d20bd317e6dd014ba4648a9654ead0e38c25e941f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3c891861bca3d8b8f496ce7d20bd317e6dd014ba4648a9654ead0e38c25e941f", kill_on_drop: false }` [INFO] [stdout] 3c891861bca3d8b8f496ce7d20bd317e6dd014ba4648a9654ead0e38c25e941f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/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:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ea5bda10b7b347ad65664cf97f17ab8fae2e58703d310fa35bd1a7facbfd455a [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" "ea5bda10b7b347ad65664cf97f17ab8fae2e58703d310fa35bd1a7facbfd455a", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling proc-macro2 v1.0.24 [INFO] [stderr] Compiling unicode-xid v0.2.1 [INFO] [stderr] Compiling syn v1.0.58 [INFO] [stderr] Compiling memchr v2.3.4 [INFO] [stderr] Compiling version_check v0.9.2 [INFO] [stderr] Checking spin v0.5.2 [INFO] [stderr] Compiling log v0.4.11 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling once_cell v1.5.2 [INFO] [stderr] Compiling serde_derive v1.0.118 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling serde v1.0.118 [INFO] [stderr] Compiling radium v0.5.3 [INFO] [stderr] Checking cfg-if v0.1.10 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling lexical-core v0.7.4 [INFO] [stderr] Compiling proc-macro-nested v0.1.6 [INFO] [stderr] Compiling maplit v1.0.2 [INFO] [stderr] Compiling futures-core v0.3.9 [INFO] [stderr] Checking untrusted v0.7.1 [INFO] [stderr] Compiling ucd-trie v0.1.3 [INFO] [stderr] Checking slab v0.4.2 [INFO] [stderr] Compiling build_const v0.2.1 [INFO] [stderr] Compiling matches v0.1.8 [INFO] [stderr] Compiling futures-sink v0.3.9 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.10 [INFO] [stderr] Compiling regex-syntax v0.6.22 [INFO] [stderr] Compiling base64 v0.12.3 [INFO] [stderr] Compiling pin-project-lite v0.2.3 [INFO] [stderr] Compiling futures-io v0.3.9 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Compiling itoa v0.4.7 [INFO] [stderr] Compiling percent-encoding v2.1.0 [INFO] [stderr] Checking funty v1.1.0 [INFO] [stderr] Checking wyz v0.2.0 [INFO] [stderr] Checking tap v1.0.0 [INFO] [stderr] Checking bytes v0.5.6 [INFO] [stderr] Compiling ahash v0.4.7 [INFO] [stderr] Checking pin-project-lite v0.1.11 [INFO] [stderr] Compiling serde_json v1.0.61 [INFO] [stderr] Checking arrayvec v0.5.2 [INFO] [stderr] Checking subtle v2.4.0 [INFO] [stderr] Compiling whoami v1.0.3 [INFO] [stderr] Checking unicode_categories v0.1.1 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Compiling ring v0.16.19 [INFO] [stderr] Checking instant v0.1.9 [INFO] [stderr] Checking futures-task v0.3.9 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Compiling num-bigint-dig v0.6.1 [INFO] [stderr] Compiling unicode-bidi v0.3.4 [INFO] [stderr] Compiling futures-channel v0.3.9 [INFO] [stderr] Checking tinyvec v1.1.0 [INFO] [stderr] Compiling pest v2.1.3 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Compiling nom v6.0.1 [INFO] [stderr] Compiling ahash v0.6.2 [INFO] [stderr] Compiling crc v1.8.1 [INFO] [stderr] Compiling form_urlencoded v1.0.0 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling crossbeam-utils v0.8.1 [INFO] [stderr] Compiling num-iter v0.1.42 [INFO] [stderr] Compiling num-bigint v0.3.1 [INFO] [stderr] Checking lock_api v0.4.2 [INFO] [stderr] Compiling hashbrown v0.9.1 [INFO] [stderr] Compiling libc v0.2.82 [INFO] [stderr] Compiling typenum v1.12.0 [INFO] [stderr] Compiling thread_local v1.1.0 [INFO] [stderr] Compiling libm v0.2.1 [INFO] [stderr] Checking net2 v0.2.37 [INFO] [stderr] Checking getrandom v0.2.1 [INFO] [stderr] Checking parking_lot_core v0.8.2 [INFO] [stderr] Compiling idna v0.2.0 [INFO] [stderr] Compiling stringprep v0.1.2 [INFO] [stderr] Compiling hashlink v0.6.0 [INFO] [stderr] Compiling aho-corasick v0.7.15 [INFO] [stderr] Compiling bitvec v0.19.4 [INFO] [stderr] Checking unicode-normalization v0.1.16 [INFO] [stderr] Compiling iovec v0.1.4 [INFO] [stderr] Compiling signal-hook-registry v1.3.0 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Compiling pest_meta v2.1.3 [INFO] [stderr] Checking mio v0.6.23 [INFO] [stderr] Compiling quote v1.0.8 [INFO] [stderr] Checking parking_lot v0.11.1 [INFO] [stderr] Compiling url v2.2.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Compiling regex v1.4.3 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Compiling crossbeam-channel v0.5.0 [INFO] [stderr] Compiling crossbeam-queue v0.3.1 [INFO] [stderr] Checking atoi v0.4.0 [INFO] [stderr] Checking sha2 v0.9.2 [INFO] [stderr] Checking sha-1 v0.9.2 [INFO] [stderr] Checking mio-uds v0.6.8 [INFO] [stderr] Compiling webpki v0.21.4 [INFO] [stderr] Compiling sct v0.6.0 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking pem v0.8.2 [INFO] [stderr] Compiling rustls v0.18.1 [INFO] [stderr] Compiling webpki-roots v0.21.0 [INFO] [stderr] Compiling sqlformat v0.1.5 [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] Compiling tokio-macros v0.2.6 [INFO] [stderr] Compiling zeroize_derive v1.0.1 [INFO] [stderr] Compiling futures-macro v0.3.9 [INFO] [stderr] Compiling thiserror-impl v1.0.23 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Compiling zeroize v1.2.0 [INFO] [stderr] Compiling tokio v0.2.24 [INFO] [stderr] Compiling semver-parser v0.10.0 [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] Checking tokio-rustls v0.14.1 [INFO] [stderr] Checking sqlx-rt v0.2.0 [INFO] [stderr] Compiling semver v0.11.0 [INFO] [stderr] Compiling cargo_metadata v0.12.1 [INFO] [stderr] Checking rsa v0.3.0 [INFO] [stderr] Checking sqlx-core v0.4.2 [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:524:5 [INFO] [stdout] | [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: expanding `table! { #[table = "bar_table"] struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32, [INFO] [stdout] } }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, [INFO] [stdout] #[pk, column = "bar_column",] foo2 : u32, [INFO] [stdout] }], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32, [INFO] [stdout] }], }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, [INFO] [stdout] #[pk, column = "bar_column",] foo2 : u32, [INFO] [stdout] }], table_name = "bar_table", [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32, [INFO] [stdout] }], table_name = "bar_table", }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [#[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32,], table = { struct_name = Foo, table_name = "bar_table", }, [INFO] [stdout] columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [INFO] [stdout] [#[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] foo2 [INFO] [stdout] : u32,], table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [pk, column = "foo_column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, tokens = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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 = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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 = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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 = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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, #[pk, column = "bar_column",] 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, #[pk, column = "bar_column",] 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, #[pk, column = "bar_column",] foo2 : u32,], [INFO] [stdout] annotations = { 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, #[pk, column = "bar_column",] 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 = [#[pk, column = "bar_column",] 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 = [#[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [#[pk, column = "bar_column",] 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 = [#[pk, column = "bar_column",] 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 `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [pk, column = "bar_column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, 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 `_annotation! { annotation_tokens = [pk, column = "bar_column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, 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 `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [column = "bar_column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, 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 `_annotation! { annotation_tokens = [column = "bar_column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, 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 `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, tokens = [foo2 : u32,], [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 `_annotation! { annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, 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] tokens = [foo2 : u32,], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, 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,], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, 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] { [INFO] [stdout] type_name = foo2, ty = u32, primary_key = true, column = "bar_column", [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] },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { current_column = [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = true, column = "bar_column", }, [INFO] [stdout] 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] = 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] }, [INFO] [stdout] { [INFO] [stdout] type_name = foo2, ty = u32, primary_key = true, column = [INFO] [stdout] "bar_column", [INFO] [stdout] },], [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 = true, column = "bar_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] { [INFO] [stdout] type_name = foo2, ty = u32, primary_key = true, column = "bar_column", [INFO] [stdout] },],) ;` [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 = true, column = "bar_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 ! [INFO] [stdout] { if true == true { pk . push("bar_column") ; } else { } } ; pk [INFO] [stdout] } pub fn get_columns() -> & 'static [& 'static str] [INFO] [stdout] { & ["foo_column", "bar_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 true == 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] save(& self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >) -> [INFO] [stdout] Option < Result < :: sqlx :: mysql :: MySqlDone, :: sqlx :: Error >> [INFO] [stdout] { [INFO] [stdout] match self . changes() [INFO] [stdout] { [INFO] [stdout] Change :: Update(u) => self . build_update_query(pool, u) . await, [INFO] [stdout] Insert => self . build_insert_query(pool) . await [INFO] [stdout] } [INFO] [stdout] } async fn build_insert_query < 'a > [INFO] [stdout] (& 'a self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >) -> [INFO] [stdout] Option < Result < :: sqlx :: mysql :: MySqlDone, :: sqlx :: Error >> where [INFO] [stdout] u32 : for < 'x > :: sqlx :: Encode < 'x, :: sqlx :: mysql :: MySql >, u32 [INFO] [stdout] : :: sqlx :: Type < :: sqlx :: mysql :: MySql >, u32 : for < 'x > :: sqlx [INFO] [stdout] :: Encode < 'x, :: sqlx :: mysql :: MySql >, u32 : :: sqlx :: Type < :: [INFO] [stdout] sqlx :: mysql :: MySql >, [INFO] [stdout] { [INFO] [stdout] let sql = concat ! [INFO] [stdout] ("INSERT INTO ", "bar_table", " (", _separated ! [INFO] [stdout] { [, ",",] "foo_column", "bar_column", }, ") VALUES ( ", [INFO] [stdout] _instead_separated ! { ["?"] [, ", ",] "foo_column", "bar_column", }, [INFO] [stdout] " )") ; panic ! ("...") ; [INFO] [stdout] } async fn build_update_query < 'a > [INFO] [stdout] (& 'a self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >, updates [INFO] [stdout] : Vec < Update < 'a >>) -> 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 . changes() . unwrap_update() ; if updates . len() [INFO] [stdout] == 0 { 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 true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("bar_column") ; 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 changes(& self) -> Change [INFO] [stdout] { [INFO] [stdout] let shadow = match self . _shadow [INFO] [stdout] { Some(ref s) => s, None => return Change :: Insert } ; let mut buf = [INFO] [stdout] vec ! [] ; 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] } 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] } Change :: Update(buf) [INFO] [stdout] } [INFO] [stdout] }` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __rust_force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `__rust_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 true == true { pk . push("bar_column") ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! (@ go true true { pk . push("bar_column") ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { pk . push("bar_column") ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { (true true) => { pk . push("bar_column") ; } ; (true true) => { } } [INFO] [stdout] __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `pk . push("bar_column") ;` [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 true == true { q = q . bind(self . foo2 . clone()) ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if true == true { q = q . bind(self . foo2 . clone()) ; } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if true == true { q = q . bind(self . foo2 . clone()) ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go true true { q = q . bind(self . foo2 . clone()) ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { q = q . bind(self . foo2 . clone()) ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (true true) => { q = q . bind(self . foo2 . 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 . foo2 . clone()) ;` [INFO] [stdout] = note: expanding `_separated! { [, ",",] "foo_column", "bar_column", }` [INFO] [stdout] = note: to `_separated ! [INFO] [stdout] { separator = [, ",",], tokens = ["foo_column", "bar_column",], result = [], }` [INFO] [stdout] = note: expanding `_separated! { separator = [, ",",], tokens = ["foo_column", "bar_column",], result = [], }` [INFO] [stdout] = note: to `_separated ! [INFO] [stdout] { [INFO] [stdout] separator = [, ",",], tokens = ["bar_column",], result = [INFO] [stdout] ["foo_column", ",",], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_separated! { separator = [, ",",], tokens = ["bar_column",], result = ["foo_column", ",",], }` [INFO] [stdout] = note: to `_separated ! [INFO] [stdout] { [INFO] [stdout] separator = [, ",",], tokens = [], result = [INFO] [stdout] ["foo_column", ",", "bar_column"], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_separated! { separator = [, ",",], tokens = [], result = ["foo_column", ",", "bar_column"], }` [INFO] [stdout] = note: to `concat ! ("foo_column", ",", "bar_column")` [INFO] [stdout] = note: expanding `_instead_separated! { ["?"] [, ", ",] "foo_column", "bar_column", }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = [INFO] [stdout] ["foo_column", "bar_column",], result = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = [INFO] [stdout] ["foo_column", "bar_column",], result = [], }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = [, "bar_column",], result [INFO] [stdout] = ["?", ", ",], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = [, "bar_column",], result = [INFO] [stdout] ["?", ", ",], }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = ["bar_column",], result = [INFO] [stdout] ["?", ", ",], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = ["bar_column",], result = [INFO] [stdout] ["?", ", ",], }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = [], result = [INFO] [stdout] ["?", ", ", "?"], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = [], result = [INFO] [stdout] ["?", ", ", "?"], }` [INFO] [stdout] = note: to `concat ! ("?", ", ", "?")` [INFO] [stdout] = note: expanding `panic_2015! { "..." }` [INFO] [stdout] = note: to `{ $crate :: rt :: begin_panic("...") }` [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 true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("bar_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("bar_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("bar_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("bar_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("bar_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("bar_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("bar_column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ;` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __rust_force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `__rust_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:524:5 [INFO] [stdout] | [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: expanding `table! { #[table = "bar_table"] struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32, [INFO] [stdout] } }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, [INFO] [stdout] #[pk, column = "bar_column",] foo2 : u32, [INFO] [stdout] }], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [#[table = "bar_table"] struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32, [INFO] [stdout] }], }` [INFO] [stdout] = note: to `_table ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, [INFO] [stdout] #[pk, column = "bar_column",] foo2 : u32, [INFO] [stdout] }], table_name = "bar_table", [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_table! { tokens = [INFO] [stdout] [struct Foo [INFO] [stdout] { [INFO] [stdout] #[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32, [INFO] [stdout] }], table_name = "bar_table", }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [INFO] [stdout] [#[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] [INFO] [stdout] foo2 : u32,], table = { struct_name = Foo, table_name = "bar_table", }, [INFO] [stdout] columns = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { tokens = [INFO] [stdout] [#[pk, column = "foo_column",] foo1 : u32, #[pk, column = "bar_column",] foo2 [INFO] [stdout] : u32,], table = { struct_name = Foo, table_name = "bar_table", }, columns = [INFO] [stdout] [], }` [INFO] [stdout] = note: to `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [pk, column = "foo_column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, tokens = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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 = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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 = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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 = [INFO] [stdout] [foo1 : u32, #[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { 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, #[pk, column = "bar_column",] 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, #[pk, column = "bar_column",] 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, #[pk, column = "bar_column",] foo2 : u32,], [INFO] [stdout] annotations = { 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, #[pk, column = "bar_column",] 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 = [#[pk, column = "bar_column",] 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 = [#[pk, column = "bar_column",] foo2 : u32,], table = [INFO] [stdout] { struct_name = Foo, table_name = "bar_table", }, columns = [], }` [INFO] [stdout] = note: to `_columns ! [INFO] [stdout] { [INFO] [stdout] tokens = [#[pk, column = "bar_column",] 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 = [#[pk, column = "bar_column",] 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 `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [pk, column = "bar_column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, 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 `_annotation! { annotation_tokens = [pk, column = "bar_column",], annotations = [INFO] [stdout] { primary_key = false, column = "", }, 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 `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [column = "bar_column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, 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 `_annotation! { annotation_tokens = [column = "bar_column",], annotations = [INFO] [stdout] { primary_key = true, column = "", }, 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 `_annotation ! [INFO] [stdout] { [INFO] [stdout] annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, tokens = [foo2 : u32,], [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 `_annotation! { annotation_tokens = [], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, 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] tokens = [foo2 : u32,], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, 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,], annotations = [INFO] [stdout] { primary_key = true, column = "bar_column", }, 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] { [INFO] [stdout] type_name = foo2, ty = u32, primary_key = true, column = "bar_column", [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] },], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_columns! { current_column = [INFO] [stdout] { type_name = foo2, ty = u32, primary_key = true, column = "bar_column", }, [INFO] [stdout] 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] = 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] }, [INFO] [stdout] { [INFO] [stdout] type_name = foo2, ty = u32, primary_key = true, column = [INFO] [stdout] "bar_column", [INFO] [stdout] },], [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 = true, column = "bar_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] { [INFO] [stdout] type_name = foo2, ty = u32, primary_key = true, column = "bar_column", [INFO] [stdout] },],) ;` [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 = true, column = "bar_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 ! [INFO] [stdout] { if true == true { pk . push("bar_column") ; } else { } } ; pk [INFO] [stdout] } pub fn get_columns() -> & 'static [& 'static str] [INFO] [stdout] { & ["foo_column", "bar_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 true == 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] save(& self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >) -> [INFO] [stdout] Option < Result < :: sqlx :: mysql :: MySqlDone, :: sqlx :: Error >> [INFO] [stdout] { [INFO] [stdout] match self . changes() [INFO] [stdout] { [INFO] [stdout] Change :: Update(u) => self . build_update_query(pool, u) . await, [INFO] [stdout] Insert => self . build_insert_query(pool) . await [INFO] [stdout] } [INFO] [stdout] } async fn build_insert_query < 'a > [INFO] [stdout] (& 'a self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >) -> [INFO] [stdout] Option < Result < :: sqlx :: mysql :: MySqlDone, :: sqlx :: Error >> where [INFO] [stdout] u32 : for < 'x > :: sqlx :: Encode < 'x, :: sqlx :: mysql :: MySql >, u32 [INFO] [stdout] : :: sqlx :: Type < :: sqlx :: mysql :: MySql >, u32 : for < 'x > :: sqlx [INFO] [stdout] :: Encode < 'x, :: sqlx :: mysql :: MySql >, u32 : :: sqlx :: Type < :: [INFO] [stdout] sqlx :: mysql :: MySql >, [INFO] [stdout] { [INFO] [stdout] let sql = concat ! [INFO] [stdout] ("INSERT INTO ", "bar_table", " (", _separated ! [INFO] [stdout] { [, ",",] "foo_column", "bar_column", }, ") VALUES ( ", [INFO] [stdout] _instead_separated ! { ["?"] [, ", ",] "foo_column", "bar_column", }, [INFO] [stdout] " )") ; panic ! ("...") ; [INFO] [stdout] } async fn build_update_query < 'a > [INFO] [stdout] (& 'a self, pool : :: sqlx :: Pool < :: sqlx :: mysql :: MySql >, updates [INFO] [stdout] : Vec < Update < 'a >>) -> 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 . changes() . unwrap_update() ; if updates . len() [INFO] [stdout] == 0 { 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 true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("bar_column") ; 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 changes(& self) -> Change [INFO] [stdout] { [INFO] [stdout] let shadow = match self . _shadow [INFO] [stdout] { Some(ref s) => s, None => return Change :: Insert } ; let mut buf = [INFO] [stdout] vec ! [] ; 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] } 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] } Change :: Update(buf) [INFO] [stdout] } [INFO] [stdout] }` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __rust_force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `__rust_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 true == true { pk . push("bar_column") ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! (@ go true true { pk . push("bar_column") ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { pk . push("bar_column") ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { (true true) => { pk . push("bar_column") ; } ; (true true) => { } } [INFO] [stdout] __static_cond ! (true true) ;` [INFO] [stdout] = note: expanding `__static_cond! { true true }` [INFO] [stdout] = note: to `pk . push("bar_column") ;` [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 true == true { q = q . bind(self . foo2 . clone()) ; } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (if true == true { q = q . bind(self . foo2 . clone()) ; } else { }) ;` [INFO] [stdout] = note: expanding `static_cond! { if true == true { q = q . bind(self . foo2 . clone()) ; } else { } }` [INFO] [stdout] = note: to `$crate :: static_cond ! [INFO] [stdout] (@ go true true { q = q . bind(self . foo2 . clone()) ; } { }) ;` [INFO] [stdout] = note: expanding `static_cond! { @ go true true { q = q . bind(self . foo2 . clone()) ; } { } }` [INFO] [stdout] = note: to `macro_rules ! __static_cond [INFO] [stdout] { [INFO] [stdout] (true true) => { q = q . bind(self . foo2 . 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 . foo2 . clone()) ;` [INFO] [stdout] = note: expanding `_separated! { [, ",",] "foo_column", "bar_column", }` [INFO] [stdout] = note: to `_separated ! [INFO] [stdout] { separator = [, ",",], tokens = ["foo_column", "bar_column",], result = [], }` [INFO] [stdout] = note: expanding `_separated! { separator = [, ",",], tokens = ["foo_column", "bar_column",], result = [], }` [INFO] [stdout] = note: to `_separated ! [INFO] [stdout] { [INFO] [stdout] separator = [, ",",], tokens = ["bar_column",], result = [INFO] [stdout] ["foo_column", ",",], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_separated! { separator = [, ",",], tokens = ["bar_column",], result = ["foo_column", ",",], }` [INFO] [stdout] = note: to `_separated ! [INFO] [stdout] { [INFO] [stdout] separator = [, ",",], tokens = [], result = [INFO] [stdout] ["foo_column", ",", "bar_column"], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_separated! { separator = [, ",",], tokens = [], result = ["foo_column", ",", "bar_column"], }` [INFO] [stdout] = note: to `concat ! ("foo_column", ",", "bar_column")` [INFO] [stdout] = note: expanding `_instead_separated! { ["?"] [, ", ",] "foo_column", "bar_column", }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = [INFO] [stdout] ["foo_column", "bar_column",], result = [], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = [INFO] [stdout] ["foo_column", "bar_column",], result = [], }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = [, "bar_column",], result [INFO] [stdout] = ["?", ", ",], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = [, "bar_column",], result = [INFO] [stdout] ["?", ", ",], }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = ["bar_column",], result = [INFO] [stdout] ["?", ", ",], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = ["bar_column",], result = [INFO] [stdout] ["?", ", ",], }` [INFO] [stdout] = note: to `_instead_separated ! [INFO] [stdout] { [INFO] [stdout] instead = ["?"], separator = [, ", ",], tokens = [], result = [INFO] [stdout] ["?", ", ", "?"], [INFO] [stdout] }` [INFO] [stdout] = note: expanding `_instead_separated! { instead = ["?"], separator = [, ", ",], tokens = [], result = [INFO] [stdout] ["?", ", ", "?"], }` [INFO] [stdout] = note: to `concat ! ("?", ", ", "?")` [INFO] [stdout] = note: expanding `panic_2015! { "..." }` [INFO] [stdout] = note: to `{ $crate :: rt :: begin_panic("...") }` [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 true == true [INFO] [stdout] { [INFO] [stdout] sql . push_str("`") ; sql . push_str("bar_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("bar_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("bar_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("bar_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("bar_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("bar_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("bar_column") ; sql . [INFO] [stdout] push_str("` = ? AND ") ;` [INFO] [stdout] = note: expanding `vec! { }` [INFO] [stdout] = note: to `$crate :: __rust_force_expr ! ($crate :: vec :: Vec :: new())` [INFO] [stdout] = note: expanding `__rust_force_expr! { $crate :: vec :: Vec :: new() }` [INFO] [stdout] = note: to `::alloc::vec::Vec::new()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Insert` [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Insert` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` 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: unused variable: `pool` [INFO] [stdout] --> src/main.rs:424:55 [INFO] [stdout] | [INFO] [stdout] 424 | async fn build_insert_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pool` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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 variable: `sql` [INFO] [stdout] --> src/main.rs:432:21 [INFO] [stdout] | [INFO] [stdout] 432 | let sql = concat!("INSERT INTO ", $table_name, " (", _separated! { [,",",] $($column,)* }, ") VALUES ( ", _instead_separa... [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_sql` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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 variable: `updates` [INFO] [stdout] --> src/main.rs:436:98 [INFO] [stdout] | [INFO] [stdout] 436 | async fn build_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, updates : Vec>) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_updates` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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:373:13 [INFO] [stdout] | [INFO] [stdout] 373 | pub fn get_pks() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | pub fn get_columns() -> &'static[&'static str] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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:393:13 [INFO] [stdout] | [INFO] [stdout] 393 | 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] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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: `save` [INFO] [stdout] --> src/main.rs:414:13 [INFO] [stdout] | [INFO] [stdout] 414 | / async fn save(&self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] 415 | | -> Option> [INFO] [stdout] 416 | | { [INFO] [stdout] 417 | | match self.changes() { [INFO] [stdout] ... | [INFO] [stdout] 420 | | } [INFO] [stdout] 421 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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_insert_query` [INFO] [stdout] --> src/main.rs:424:13 [INFO] [stdout] | [INFO] [stdout] 424 | / async fn build_insert_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] 425 | | -> Option> [INFO] [stdout] 426 | | where [INFO] [stdout] 427 | | $( [INFO] [stdout] ... | [INFO] [stdout] 433 | | panic!("..."); [INFO] [stdout] 434 | | } [INFO] [stdout] | |______________^ [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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:436:13 [INFO] [stdout] | [INFO] [stdout] 436 | / async fn build_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, updates : Vec>) [INFO] [stdout] 437 | | -> Option> [INFO] [stdout] 438 | | where [INFO] [stdout] 439 | | $( [INFO] [stdout] ... | [INFO] [stdout] 479 | | ) [INFO] [stdout] 480 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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: variable `Insert` should have a snake case name [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `insert` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` 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: 11 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Insert` [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Insert` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` 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: unused variable: `pool` [INFO] [stdout] --> src/main.rs:424:55 [INFO] [stdout] | [INFO] [stdout] 424 | async fn build_insert_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pool` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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 variable: `sql` [INFO] [stdout] --> src/main.rs:432:21 [INFO] [stdout] | [INFO] [stdout] 432 | let sql = concat!("INSERT INTO ", $table_name, " (", _separated! { [,",",] $($column,)* }, ") VALUES ( ", _instead_separa... [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_sql` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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 variable: `updates` [INFO] [stdout] --> src/main.rs:436:98 [INFO] [stdout] | [INFO] [stdout] 436 | async fn build_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, updates : Vec>) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_updates` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [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 variable: `Insert` [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Insert` [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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 variable: `pool` [INFO] [stdout] --> src/main.rs:424:55 [INFO] [stdout] | [INFO] [stdout] 424 | async fn build_insert_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pool` [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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 variable: `sql` [INFO] [stdout] --> src/main.rs:432:21 [INFO] [stdout] | [INFO] [stdout] 432 | ... let sql = concat!("INSERT INTO ", $table_name, " (", _separated! { [,",",] $($column,)* }, ") VALUES ( ", _instead_separate... [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_sql` [INFO] [stdout] ... [INFO] [stdout] 543 | / ... table!( [INFO] [stdout] 544 | | ... #[table = "bar_table"] [INFO] [stdout] 545 | | ... struct Foo { [INFO] [stdout] 546 | | ... #[column = "foo column",] [INFO] [stdout] 547 | | ... foo1 : u32, [INFO] [stdout] 548 | | ... } [INFO] [stdout] 549 | | ... ); [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 variable: `updates` [INFO] [stdout] --> src/main.rs:436:98 [INFO] [stdout] | [INFO] [stdout] 436 | async fn build_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, updates : Vec>) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_updates` [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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 variable: `Insert` [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Insert` [INFO] [stdout] ... [INFO] [stdout] 596 | / table!( [INFO] [stdout] 597 | | #[table = "xxxx"] [INFO] [stdout] 598 | | struct Xxx { [INFO] [stdout] 599 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | } [INFO] [stdout] 606 | | ); [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 variable: `pool` [INFO] [stdout] --> src/main.rs:424:55 [INFO] [stdout] | [INFO] [stdout] 424 | async fn build_insert_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pool` [INFO] [stdout] ... [INFO] [stdout] 596 | / table!( [INFO] [stdout] 597 | | #[table = "xxxx"] [INFO] [stdout] 598 | | struct Xxx { [INFO] [stdout] 599 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | } [INFO] [stdout] 606 | | ); [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 variable: `sql` [INFO] [stdout] --> src/main.rs:432:21 [INFO] [stdout] | [INFO] [stdout] 432 | ... let sql = concat!("INSERT INTO ", $table_name, " (", _separated! { [,",",] $($column,)* }, ") VALUES ( ", _instead_separated! { ["?... [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_sql` [INFO] [stdout] ... [INFO] [stdout] 596 | / ... table!( [INFO] [stdout] 597 | | ... #[table = "xxxx"] [INFO] [stdout] 598 | | ... struct Xxx { [INFO] [stdout] 599 | | ... #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | ... } [INFO] [stdout] 606 | | ... ); [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 variable: `updates` [INFO] [stdout] --> src/main.rs:436:98 [INFO] [stdout] | [INFO] [stdout] 436 | async fn build_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, updates : Vec>) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_updates` [INFO] [stdout] ... [INFO] [stdout] 596 | / table!( [INFO] [stdout] 597 | | #[table = "xxxx"] [INFO] [stdout] 598 | | struct Xxx { [INFO] [stdout] 599 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | } [INFO] [stdout] 606 | | ); [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: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:376:21 [INFO] [stdout] | [INFO] [stdout] 376 | let mut pk = vec![]; [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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:373:13 [INFO] [stdout] | [INFO] [stdout] 373 | pub fn get_pks() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | pub fn get_columns() -> &'static[&'static str] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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:393:13 [INFO] [stdout] | [INFO] [stdout] 393 | 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] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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: `save` [INFO] [stdout] --> src/main.rs:414:13 [INFO] [stdout] | [INFO] [stdout] 414 | / async fn save(&self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] 415 | | -> Option> [INFO] [stdout] 416 | | { [INFO] [stdout] 417 | | match self.changes() { [INFO] [stdout] ... | [INFO] [stdout] 420 | | } [INFO] [stdout] 421 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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_insert_query` [INFO] [stdout] --> src/main.rs:424:13 [INFO] [stdout] | [INFO] [stdout] 424 | / async fn build_insert_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>) [INFO] [stdout] 425 | | -> Option> [INFO] [stdout] 426 | | where [INFO] [stdout] 427 | | $( [INFO] [stdout] ... | [INFO] [stdout] 433 | | panic!("..."); [INFO] [stdout] 434 | | } [INFO] [stdout] | |______________^ [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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:436:13 [INFO] [stdout] | [INFO] [stdout] 436 | / async fn build_update_query<'a>(&'a self, pool : ::sqlx::Pool<::sqlx::mysql::MySql>, updates : Vec>) [INFO] [stdout] 437 | | -> Option> [INFO] [stdout] 438 | | where [INFO] [stdout] 439 | | $( [INFO] [stdout] ... | [INFO] [stdout] 479 | | ) [INFO] [stdout] 480 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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:373:13 [INFO] [stdout] | [INFO] [stdout] 373 | pub fn get_pks() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 596 | / table!( [INFO] [stdout] 597 | | #[table = "xxxx"] [INFO] [stdout] 598 | | struct Xxx { [INFO] [stdout] 599 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | } [INFO] [stdout] 606 | | ); [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:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | pub fn get_columns() -> &'static[&'static str] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 596 | / table!( [INFO] [stdout] 597 | | #[table = "xxxx"] [INFO] [stdout] 598 | | struct Xxx { [INFO] [stdout] 599 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | } [INFO] [stdout] 606 | | ); [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: variable `Insert` should have a snake case name [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `insert` [INFO] [stdout] ... [INFO] [stdout] 524 | / table!( [INFO] [stdout] 525 | | #[table = "bar_table"] [INFO] [stdout] 526 | | struct Foo { [INFO] [stdout] 527 | | #[pk, column = "foo_column",] [INFO] [stdout] ... | [INFO] [stdout] 531 | | } [INFO] [stdout] 532 | | ); [INFO] [stdout] | |______- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` 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: variable `Insert` should have a snake case name [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `insert` [INFO] [stdout] ... [INFO] [stdout] 543 | / table!( [INFO] [stdout] 544 | | #[table = "bar_table"] [INFO] [stdout] 545 | | struct Foo { [INFO] [stdout] 546 | | #[column = "foo column",] [INFO] [stdout] 547 | | foo1 : u32, [INFO] [stdout] 548 | | } [INFO] [stdout] 549 | | ); [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: variable `Insert` should have a snake case name [INFO] [stdout] --> src/main.rs:419:21 [INFO] [stdout] | [INFO] [stdout] 419 | Insert => self.build_insert_query(pool).await [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `insert` [INFO] [stdout] ... [INFO] [stdout] 596 | / table!( [INFO] [stdout] 597 | | #[table = "xxxx"] [INFO] [stdout] 598 | | struct Xxx { [INFO] [stdout] 599 | | #[pk, column = "id",] [INFO] [stdout] ... | [INFO] [stdout] 605 | | } [INFO] [stdout] 606 | | ); [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 `Result` that must be used [INFO] [stdout] --> src/main.rs:615:17 [INFO] [stdout] | [INFO] [stdout] 615 | item.save(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: 25 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3m 13s [INFO] running `Command { std: "docker" "inspect" "ea5bda10b7b347ad65664cf97f17ab8fae2e58703d310fa35bd1a7facbfd455a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ea5bda10b7b347ad65664cf97f17ab8fae2e58703d310fa35bd1a7facbfd455a", kill_on_drop: false }` [INFO] [stdout] ea5bda10b7b347ad65664cf97f17ab8fae2e58703d310fa35bd1a7facbfd455a