[INFO] fetching crate egglog-bridge 3.0.0...
[INFO] checking egglog-bridge-3.0.0 against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] extracting crate egglog-bridge 3.0.0 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate egglog-bridge 3.0.0
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate egglog-bridge 3.0.0
[INFO] tweaked toml for crates.io crate egglog-bridge 3.0.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate egglog-bridge 3.0.0 on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate egglog-bridge 3.0.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838
[INFO] running `Command { std: "docker" "start" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]    Compiling find-msvc-tools v0.1.3
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking bumpalo v3.19.0
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking egglog-numeric-id v3.0.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cc v1.2.40
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking fixedbitset v0.5.7
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking ordered-float v5.1.0
[INFO] [stderr]     Checking jiff v0.2.15
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking egglog-concurrency v3.0.0
[INFO] [stderr]     Checking egglog-union-find v3.0.0
[INFO] [stderr]    Compiling libmimalloc-sys v0.1.44
[INFO] [stderr]     Checking regex-automata v0.4.11
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking num v0.4.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking mimalloc v0.1.48
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking regex v1.11.3
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking hashbrown v0.16.0
[INFO] [stderr]     Checking indexmap v2.11.4
[INFO] [stderr]     Checking egglog-reports v3.0.0
[INFO] [stderr]     Checking egglog-core-relations v3.0.0
[INFO] [stderr]     Checking egglog-bridge v3.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]   --> src/macros.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout] 79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout] 80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout] 81 | |         $v.push($e);
[INFO] [stdout] ...  |
[INFO] [stdout] 86 | |         $v.push(ret.into());
[INFO] [stdout]    | |                 ^^^^^^^^^^
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     };
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:50:20
[INFO] [stdout]    |
[INFO] [stdout] 50 |       let add_comm = define_rule! {
[INFO] [stdout]    |  ____________________-
[INFO] [stdout] 51 | |         [egraph] ((-> (add_table x y) id))
[INFO] [stdout] 52 | |               => ((set (add_table y x) id))
[INFO] [stdout] 53 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]   --> src/macros.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout] 79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout] 80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout] 81 | |         $v.push($e);
[INFO] [stdout] ...  |
[INFO] [stdout] 86 | |         $v.push(ret.into());
[INFO] [stdout]    | |                 ^^^^^^^^^^
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     };
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:50:20
[INFO] [stdout]    |
[INFO] [stdout] 50 |       let add_comm = define_rule! {
[INFO] [stdout]    |  ____________________-
[INFO] [stdout] 51 | |         [egraph] ((-> (add_table x y) id))
[INFO] [stdout] 52 | |               => ((set (add_table y x) id))
[INFO] [stdout] 53 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]   --> src/macros.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout] 79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout] 80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout] 81 | |         $v.push($e);
[INFO] [stdout] ...  |
[INFO] [stdout] 86 | |         $v.push(ret.into());
[INFO] [stdout]    | |                 ^^^^^^^^^^
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     };
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |       let add_assoc = define_rule! {
[INFO] [stdout]    |  _____________________-
[INFO] [stdout] 56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 58 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]   --> src/macros.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout] 79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout] 80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout] 81 | |         $v.push($e);
[INFO] [stdout] ...  |
[INFO] [stdout] 86 | |         $v.push(ret.into());
[INFO] [stdout]    | |                 ^^^^^^^^^^
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     };
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |       let add_assoc = define_rule! {
[INFO] [stdout]    |  _____________________-
[INFO] [stdout] 56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 58 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]   --> src/macros.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout] 79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout] 80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout] 81 | |         $v.push($e);
[INFO] [stdout] ...  |
[INFO] [stdout] 86 | |         $v.push(ret.into());
[INFO] [stdout]    | |                 ^^^^^^^^^^
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     };
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |       let add_assoc = define_rule! {
[INFO] [stdout]    |  _____________________-
[INFO] [stdout] 56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 58 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]   --> src/macros.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout] 79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout] 80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout] 81 | |         $v.push($e);
[INFO] [stdout] ...  |
[INFO] [stdout] 91 | |         $v.push(ret.into());
[INFO] [stdout]    | |                 ^^^^^^^^^^
[INFO] [stdout] 92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout] 93 | |     };
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |       let add_assoc = define_rule! {
[INFO] [stdout]    |  _____________________-
[INFO] [stdout] 56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 58 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:137:20
[INFO] [stdout]     |
[INFO] [stdout] 137 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout] 138 | |         [egraph] ((-> (add_table x y) id) (-> (num_table {one}) x))
[INFO] [stdout] 139 | |               => ((set (add_table y x) id))
[INFO] [stdout] 140 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:137:20
[INFO] [stdout]     |
[INFO] [stdout] 137 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout] 138 | |         [egraph] ((-> (add_table x y) id) (-> (num_table {one}) x))
[INFO] [stdout] 139 | |               => ((set (add_table y x) id))
[INFO] [stdout] 140 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         define_rule! {
[INFO] [stdout] 326 | |             [egraph] ((-> (add x y) id)) => ((set (add y x) id))
[INFO] [stdout] 327 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         define_rule! {
[INFO] [stdout] 326 | |             [egraph] ((-> (add x y) id)) => ((set (add y x) id))
[INFO] [stdout] 327 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 328 | /         define_rule! {
[INFO] [stdout] 329 | |             [egraph] ((-> (mul x y) id)) => ((set (mul y x) id))
[INFO] [stdout] 330 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 328 | /         define_rule! {
[INFO] [stdout] 329 | |             [egraph] ((-> (mul x y) id)) => ((set (mul y x) id))
[INFO] [stdout] 330 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 | /         define_rule! {
[INFO] [stdout] 338 | |             [egraph] ((-> (sub x y) id)) => ((set (add x (mul (rat {neg1.clone()}) y)) id))
[INFO] [stdout] 339 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 | /         define_rule! {
[INFO] [stdout] 338 | |             [egraph] ((-> (sub x y) id)) => ((set (add x (mul (rat {neg1.clone()}) y)) id))
[INFO] [stdout] 339 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 | /         define_rule! {
[INFO] [stdout] 341 | |             [egraph] ((-> (add a (rat {zero.clone()})) id)) => ((union a id))
[INFO] [stdout] 342 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 | /         define_rule! {
[INFO] [stdout] 341 | |             [egraph] ((-> (add a (rat {zero.clone()})) id)) => ((union a id))
[INFO] [stdout] 342 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 | /         define_rule! {
[INFO] [stdout] 344 | |             [egraph] ((-> (rat {zero.clone()}) z_id) (-> (mul a z_id) id))
[INFO] [stdout] 345 | |                     => ((union id z_id))
[INFO] [stdout] 346 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 | /         define_rule! {
[INFO] [stdout] 344 | |             [egraph] ((-> (rat {zero.clone()}) z_id) (-> (mul a z_id) id))
[INFO] [stdout] 345 | |                     => ((union id z_id))
[INFO] [stdout] 346 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 347 | /         define_rule! {
[INFO] [stdout] 348 | |             [egraph] ((-> (mul a (rat {one.clone()})) id)) => ((union a id))
[INFO] [stdout] 349 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 347 | /         define_rule! {
[INFO] [stdout] 348 | |             [egraph] ((-> (mul a (rat {one.clone()})) id)) => ((union a id))
[INFO] [stdout] 349 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 | /         define_rule! {
[INFO] [stdout] 351 | |             [egraph] ((-> (sub x x) id)) => ((union id (rat {zero})))
[INFO] [stdout] 352 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 | /         define_rule! {
[INFO] [stdout] 351 | |             [egraph] ((-> (sub x x) id)) => ((union id (rat {zero})))
[INFO] [stdout] 352 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 | /         define_rule! {
[INFO] [stdout] 363 | |             [egraph] ((-> (pow x (rat {one.clone()})) id)) => ((union x id))
[INFO] [stdout] 364 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 | /         define_rule! {
[INFO] [stdout] 363 | |             [egraph] ((-> (pow x (rat {one.clone()})) id)) => ((union x id))
[INFO] [stdout] 364 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:365:9
[INFO] [stdout]     |
[INFO] [stdout] 365 | /         define_rule! {
[INFO] [stdout] 366 | |             [egraph] ((-> (pow x (rat {two})) id)) => ((set (mul x x) id))
[INFO] [stdout] 367 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:365:9
[INFO] [stdout]     |
[INFO] [stdout] 365 | /         define_rule! {
[INFO] [stdout] 366 | |             [egraph] ((-> (pow x (rat {two})) id)) => ((set (mul x x) id))
[INFO] [stdout] 367 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:380:9
[INFO] [stdout]     |
[INFO] [stdout] 380 | /         define_rule! {
[INFO] [stdout] 381 | |             [egraph] ((-> (integral (rat {one}) x) id)) => ((union id x))
[INFO] [stdout] 382 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:380:9
[INFO] [stdout]     |
[INFO] [stdout] 380 | /         define_rule! {
[INFO] [stdout] 381 | |             [egraph] ((-> (integral (rat {one}) x) id)) => ((union id x))
[INFO] [stdout] 382 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:91:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  91 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout]  92 | |         $crate::parse_lhs_atom_args!($ebuilder, $builder, $table, $v, [$($args),*]);
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  78 | / macro_rules! parse_lhs_atom_args {
[INFO] [stdout]  79 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, []) => {};
[INFO] [stdout]  80 | |     ($ebuilder:expr, $builder:expr, $table:ident, $v:expr, [{ $e:expr } $( $args:tt)*]) => {
[INFO] [stdout]  81 | |         $v.push($e);
[INFO] [stdout] ...   |
[INFO] [stdout]  86 | |         $v.push(ret.into());
[INFO] [stdout]     | |                 ^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout]  93 | |     };
[INFO] [stdout]  94 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_args` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:50:20
[INFO] [stdout]     |
[INFO] [stdout]  50 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout]  51 | |         [egraph] ((-> (add_table x y) id))
[INFO] [stdout]  52 | |               => ((set (add_table y x) id))
[INFO] [stdout]  53 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:34
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                  ^^^^^^^^^^^^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:50:20
[INFO] [stdout]     |
[INFO] [stdout]  50 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout]  51 | |         [egraph] ((-> (add_table x y) id))
[INFO] [stdout]  52 | |               => ((set (add_table y x) id))
[INFO] [stdout]  53 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:55:21
[INFO] [stdout]     |
[INFO] [stdout]  55 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout]  56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout]  57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout]  58 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:55:21
[INFO] [stdout]     |
[INFO] [stdout]  55 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout]  56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout]  57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout]  58 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:137:20
[INFO] [stdout]     |
[INFO] [stdout] 137 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout] 138 | |         [egraph] ((-> (add_table x y) id) (-> (num_table {one}) x))
[INFO] [stdout] 139 | |               => ((set (add_table y x) id))
[INFO] [stdout] 140 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:137:20
[INFO] [stdout]     |
[INFO] [stdout] 137 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout] 138 | |         [egraph] ((-> (add_table x y) id) (-> (num_table {one}) x))
[INFO] [stdout] 139 | |               => ((set (add_table y x) id))
[INFO] [stdout] 140 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:137:20
[INFO] [stdout]     |
[INFO] [stdout] 137 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout] 138 | |         [egraph] ((-> (add_table x y) id) (-> (num_table {one}) x))
[INFO] [stdout] 139 | |               => ((set (add_table y x) id))
[INFO] [stdout] 140 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:137:20
[INFO] [stdout]     |
[INFO] [stdout] 137 |       let add_comm = define_rule! {
[INFO] [stdout]     |  ____________________-
[INFO] [stdout] 138 | |         [egraph] ((-> (add_table x y) id) (-> (num_table {one}) x))
[INFO] [stdout] 139 | |               => ((set (add_table y x) id))
[INFO] [stdout] 140 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         define_rule! {
[INFO] [stdout] 326 | |             [egraph] ((-> (add x y) id)) => ((set (add y x) id))
[INFO] [stdout] 327 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         define_rule! {
[INFO] [stdout] 326 | |             [egraph] ((-> (add x y) id)) => ((set (add y x) id))
[INFO] [stdout] 327 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 328 | /         define_rule! {
[INFO] [stdout] 329 | |             [egraph] ((-> (mul x y) id)) => ((set (mul y x) id))
[INFO] [stdout] 330 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 328 | /         define_rule! {
[INFO] [stdout] 329 | |             [egraph] ((-> (mul x y) id)) => ((set (mul y x) id))
[INFO] [stdout] 330 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 | /         define_rule! {
[INFO] [stdout] 338 | |             [egraph] ((-> (sub x y) id)) => ((set (add x (mul (rat {neg1.clone()}) y)) id))
[INFO] [stdout] 339 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 | /         define_rule! {
[INFO] [stdout] 338 | |             [egraph] ((-> (sub x y) id)) => ((set (add x (mul (rat {neg1.clone()}) y)) id))
[INFO] [stdout] 339 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 | /         define_rule! {
[INFO] [stdout] 341 | |             [egraph] ((-> (add a (rat {zero.clone()})) id)) => ((union a id))
[INFO] [stdout] 342 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 | /         define_rule! {
[INFO] [stdout] 341 | |             [egraph] ((-> (add a (rat {zero.clone()})) id)) => ((union a id))
[INFO] [stdout] 342 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 | /         define_rule! {
[INFO] [stdout] 344 | |             [egraph] ((-> (rat {zero.clone()}) z_id) (-> (mul a z_id) id))
[INFO] [stdout] 345 | |                     => ((union id z_id))
[INFO] [stdout] 346 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 | /         define_rule! {
[INFO] [stdout] 344 | |             [egraph] ((-> (rat {zero.clone()}) z_id) (-> (mul a z_id) id))
[INFO] [stdout] 345 | |                     => ((union id z_id))
[INFO] [stdout] 346 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 | /         define_rule! {
[INFO] [stdout] 344 | |             [egraph] ((-> (rat {zero.clone()}) z_id) (-> (mul a z_id) id))
[INFO] [stdout] 345 | |                     => ((union id z_id))
[INFO] [stdout] 346 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 | /         define_rule! {
[INFO] [stdout] 344 | |             [egraph] ((-> (rat {zero.clone()}) z_id) (-> (mul a z_id) id))
[INFO] [stdout] 345 | |                     => ((union id z_id))
[INFO] [stdout] 346 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 347 | /         define_rule! {
[INFO] [stdout] 348 | |             [egraph] ((-> (mul a (rat {one.clone()})) id)) => ((union a id))
[INFO] [stdout] 349 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 347 | /         define_rule! {
[INFO] [stdout] 348 | |             [egraph] ((-> (mul a (rat {one.clone()})) id)) => ((union a id))
[INFO] [stdout] 349 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 | /         define_rule! {
[INFO] [stdout] 351 | |             [egraph] ((-> (sub x x) id)) => ((union id (rat {zero})))
[INFO] [stdout] 352 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 | /         define_rule! {
[INFO] [stdout] 351 | |             [egraph] ((-> (sub x x) id)) => ((union id (rat {zero})))
[INFO] [stdout] 352 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 | /         define_rule! {
[INFO] [stdout] 363 | |             [egraph] ((-> (pow x (rat {one.clone()})) id)) => ((union x id))
[INFO] [stdout] 364 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 | /         define_rule! {
[INFO] [stdout] 363 | |             [egraph] ((-> (pow x (rat {one.clone()})) id)) => ((union x id))
[INFO] [stdout] 364 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:365:9
[INFO] [stdout]     |
[INFO] [stdout] 365 | /         define_rule! {
[INFO] [stdout] 366 | |             [egraph] ((-> (pow x (rat {two})) id)) => ((set (mul x x) id))
[INFO] [stdout] 367 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:365:9
[INFO] [stdout]     |
[INFO] [stdout] 365 | /         define_rule! {
[INFO] [stdout] 366 | |             [egraph] ((-> (pow x (rat {two})) id)) => ((set (mul x x) id))
[INFO] [stdout] 367 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:380:9
[INFO] [stdout]     |
[INFO] [stdout] 380 | /         define_rule! {
[INFO] [stdout] 381 | |             [egraph] ((-> (integral (rat {one}) x) id)) => ((union id x))
[INFO] [stdout] 382 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:380:9
[INFO] [stdout]     |
[INFO] [stdout] 380 | /         define_rule! {
[INFO] [stdout] 381 | |             [egraph] ((-> (integral (rat {one}) x) id)) => ((union id x))
[INFO] [stdout] 382 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rule::QueryEntry`
[INFO] [stdout]    --> src/macros.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 125 | |             vec.push($ret.into());
[INFO] [stdout]     | |                      ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rule::QueryEntry as Into<rule::QueryEntry>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:126:45
[INFO] [stdout]     |
[INFO] [stdout] 119 | / macro_rules! parse_lhs_atom_with_ret {
[INFO] [stdout] 120 | |     ($ebuilder:expr, $builder:expr, $ret:expr, ($func:tt $($args:tt)*)) => {{
[INFO] [stdout] 121 | |         #[allow(clippy::vec_init_then_push)]
[INFO] [stdout] ...   |
[INFO] [stdout] 126 | |             $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                             ^
[INFO] [stdout] 127 | |         }
[INFO] [stdout] 128 | |     }};
[INFO] [stdout] 129 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom_with_ret` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:39
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                       ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:55:21
[INFO] [stdout]     |
[INFO] [stdout]  55 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout]  56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout]  57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout]  58 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:30
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                              ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:55:21
[INFO] [stdout]     |
[INFO] [stdout]  55 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout]  56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout]  57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout]  58 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 | /         define_rule! {
[INFO] [stdout] 341 | |             [egraph] ((-> (add a (rat {zero.clone()})) id)) => ((union a id))
[INFO] [stdout] 342 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:340:9
[INFO] [stdout]     |
[INFO] [stdout] 340 | /         define_rule! {
[INFO] [stdout] 341 | |             [egraph] ((-> (add a (rat {zero.clone()})) id)) => ((union a id))
[INFO] [stdout] 342 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 347 | /         define_rule! {
[INFO] [stdout] 348 | |             [egraph] ((-> (mul a (rat {one.clone()})) id)) => ((union a id))
[INFO] [stdout] 349 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 347 | /         define_rule! {
[INFO] [stdout] 348 | |             [egraph] ((-> (mul a (rat {one.clone()})) id)) => ((union a id))
[INFO] [stdout] 349 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 | /         define_rule! {
[INFO] [stdout] 363 | |             [egraph] ((-> (pow x (rat {one.clone()})) id)) => ((union x id))
[INFO] [stdout] 364 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 362 | /         define_rule! {
[INFO] [stdout] 363 | |             [egraph] ((-> (pow x (rat {one.clone()})) id)) => ((union x id))
[INFO] [stdout] 364 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:365:9
[INFO] [stdout]     |
[INFO] [stdout] 365 | /         define_rule! {
[INFO] [stdout] 366 | |             [egraph] ((-> (pow x (rat {two})) id)) => ((set (mul x x) id))
[INFO] [stdout] 367 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:365:9
[INFO] [stdout]     |
[INFO] [stdout] 365 | /         define_rule! {
[INFO] [stdout] 366 | |             [egraph] ((-> (pow x (rat {two})) id)) => ((set (mul x x) id))
[INFO] [stdout] 367 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:374:9
[INFO] [stdout]     |
[INFO] [stdout] 374 | /         define_rule! {
[INFO] [stdout] 375 | |             [egraph] ((-> (diff x (sin x)) id)) => ((set (cos x) id))
[INFO] [stdout] 376 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:380:9
[INFO] [stdout]     |
[INFO] [stdout] 380 | /         define_rule! {
[INFO] [stdout] 381 | |             [egraph] ((-> (integral (rat {one}) x) id)) => ((union id x))
[INFO] [stdout] 382 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:380:9
[INFO] [stdout]     |
[INFO] [stdout] 380 | /         define_rule! {
[INFO] [stdout] 381 | |             [egraph] ((-> (integral (rat {one}) x) id)) => ((union id x))
[INFO] [stdout] 382 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 383 | /         define_rule! {
[INFO] [stdout] 384 | |             [egraph] ((-> (integral (cos x) x) id)) => ((set (sin x) id))
[INFO] [stdout] 385 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:108:50
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |         let ty = $ebuilder.infer_type($func.into(), vec.len(), &$builder);
[INFO] [stdout]     | |                                                  ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  97 | / macro_rules! parse_lhs_atom {
[INFO] [stdout]  98 | |     ($ebuilder:expr, $builder:expr; $inferred_ty:expr, $var:ident) => {
[INFO] [stdout]  99 | |         $ebuilder.bind_or_lookup_var(stringify!($var), $inferred_ty, &mut $builder)
[INFO] [stdout] 100 | |     };
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         $builder.query_table($func.into(), &vec, Some(false)).unwrap();
[INFO] [stdout]     | |                                         ^
[INFO] [stdout] ...   |
[INFO] [stdout] 114 | |     }};
[INFO] [stdout] 115 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_lhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]   --> src/macros.rs:45:29
[INFO] [stdout]    |
[INFO] [stdout] 34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout] 35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout] 36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout] 37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...  |
[INFO] [stdout] 45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]    | |                             ^^^^^^^^^^^^
[INFO] [stdout] 46 | |         }
[INFO] [stdout] 47 | |     }};
[INFO] [stdout] 48 | | }
[INFO] [stdout]    | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/tests.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |       let add_assoc = define_rule! {
[INFO] [stdout]    |  _____________________-
[INFO] [stdout] 56 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 57 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 58 | |     };
[INFO] [stdout]    | |_____- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |       let add_assoc = define_rule! {
[INFO] [stdout]     |  _____________________-
[INFO] [stdout] 143 | |         [egraph] ((-> (add_table x (add_table y z)) id))
[INFO] [stdout] 144 | |               => ((set (add_table (add_table x y) z) id))
[INFO] [stdout] 145 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 | /         define_rule! {
[INFO] [stdout] 332 | |             [egraph] ((-> (add x (add y z)) id)) => ((set (add (add x y) z) id))
[INFO] [stdout] 333 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:334:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | /         define_rule! {
[INFO] [stdout] 335 | |             [egraph] ((-> (mul x (mul y z)) id)) => ((set (mul (mul x y) z) id))
[INFO] [stdout] 336 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 | /         define_rule! {
[INFO] [stdout] 338 | |             [egraph] ((-> (sub x y) id)) => ((set (add x (mul (rat {neg1.clone()}) y)) id))
[INFO] [stdout] 339 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 | /         define_rule! {
[INFO] [stdout] 338 | |             [egraph] ((-> (sub x y) id)) => ((set (add x (mul (rat {neg1.clone()}) y)) id))
[INFO] [stdout] 339 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 | /         define_rule! {
[INFO] [stdout] 351 | |             [egraph] ((-> (sub x x) id)) => ((union id (rat {zero})))
[INFO] [stdout] 352 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 | /         define_rule! {
[INFO] [stdout] 354 | |             [egraph] ((-> (mul x (add b c)) id)) => ((set (add (mul x b) (mul x c)) id))
[INFO] [stdout] 355 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | /         define_rule! {
[INFO] [stdout] 357 | |             [egraph] ((-> (add (mul x a) (mul x b)) id)) => ((set (mul x (add a b)) id))
[INFO] [stdout] 358 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:359:9
[INFO] [stdout]     |
[INFO] [stdout] 359 | /         define_rule! {
[INFO] [stdout] 360 | |             [egraph] ((-> (mul (pow a b) (pow a c)) id)) => ((set (pow a (add b c)) id))
[INFO] [stdout] 361 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | /         define_rule! {
[INFO] [stdout] 369 | |             [egraph] ((-> (diff x (add a b)) id)) => ((set (add (diff x a) (diff x b)) id))
[INFO] [stdout] 370 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 | /         define_rule! {
[INFO] [stdout] 372 | |             [egraph] ((-> (diff x (mul a b)) id)) => ((set (add (mul a (diff x b)) (mul b (diff x a))) id))
[INFO] [stdout] 373 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:377:9
[INFO] [stdout]     |
[INFO] [stdout] 377 | /         define_rule! {
[INFO] [stdout] 378 | |             [egraph] ((-> (diff x (cos x)) id)) => ((set (mul (rat {neg1.clone()}) (sin x)) id))
[INFO] [stdout] 379 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | /         define_rule! {
[INFO] [stdout] 387 | |             [egraph] ((-> (integral (sin x) x) id)) => ((set (mul (rat {neg1}) (cos x)) id))
[INFO] [stdout] 388 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 | /         define_rule! {
[INFO] [stdout] 390 | |             [egraph] ((-> (integral (add f g) x) id)) => ((set (add (integral f x) (integral g x)) id))
[INFO] [stdout] 391 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 | /         define_rule! {
[INFO] [stdout] 393 | |             [egraph] ((-> (integral (sub f g) x) id)) => ((set (sub (integral f x) (integral g x)) id))
[INFO] [stdout] 394 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `FunctionId`
[INFO] [stdout]    --> src/macros.rs:45:40
[INFO] [stdout]     |
[INFO] [stdout]  34 | / macro_rules! parse_rhs_atom {
[INFO] [stdout]  35 | |     ($ebuilder:expr, $builder:expr, $var:ident) => {{
[INFO] [stdout]  36 | |         $ebuilder.lookup_var(stringify!($var)).unwrap_or_else(|| {
[INFO] [stdout]  37 | |             panic!("use of unbound variable {} on the right-hand side of a rule", stringify!($var))
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | |             $builder.lookup($func.into(), &vec, || stringify!($func ($($args)*)).to_string())
[INFO] [stdout]     | |                                        ^
[INFO] [stdout]  46 | |         }
[INFO] [stdout]  47 | |     }};
[INFO] [stdout]  48 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::parse_rhs_atom` which comes from the expansion of the macro `define_rule`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/tests.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 | /         define_rule! {
[INFO] [stdout] 396 | |             [egraph] ((-> (integral (mul a b) x) id))
[INFO] [stdout] 397 | |             => ((set (sub (mul a (integral b x))
[INFO] [stdout] 398 | |                           (integral (mul (diff x a) (integral b x)) x)) id))
[INFO] [stdout] 399 | |         },
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<FunctionId as Into<FunctionId>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `egglog-bridge` (lib test) due to 225 previous errors
[INFO] [stderr] warning: unused dependency `ordered-float`
[INFO] [stderr]   --> Cargo.toml:37:15
[INFO] [stderr]    |
[INFO] [stderr] 37 | [dependencies.ordered-float]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `ordered-float`
[INFO] [stderr] warning: `egglog-bridge` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "inspect" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838", kill_on_drop: false }`
[INFO] [stdout] 4f0d693662818fd9de2aa63b4cdc2d4811fa7542234014720f86b5a1d66f7838
