[INFO] fetching crate blctl 0.1.2...
[INFO] checking blctl-0.1.2 against master#bca37a20bd376ce3fd138e7cdee7fe704e0f8814 for pr-150727
[INFO] extracting crate blctl 0.1.2 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate blctl 0.1.2
[INFO] finished tweaking crates.io crate blctl 0.1.2
[INFO] tweaked toml for crates.io crate blctl 0.1.2 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate blctl 0.1.2 on toolchain bca37a20bd376ce3fd138e7cdee7fe704e0f8814
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 23 packages to latest compatible versions
[INFO] [stderr]       Adding rust-ini v0.13.0 (available: v0.21.3)
[INFO] [stderr]       Adding serial_test v0.2.0 (available: v3.3.1)
[INFO] [stderr]       Adding serial_test_derive v0.2.0 (available: v3.3.1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serial_test_derive v0.2.0
[INFO] [stderr]   Downloaded rust-ini v0.13.0
[INFO] [stderr]   Downloaded serial_test v0.2.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2d4a92f535a3ab5df491d6660ee5921c40f7cdcb9be13900238366e34c51e760
[INFO] running `Command { std: "docker" "start" "-a" "2d4a92f535a3ab5df491d6660ee5921c40f7cdcb9be13900238366e34c51e760", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2d4a92f535a3ab5df491d6660ee5921c40f7cdcb9be13900238366e34c51e760", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2d4a92f535a3ab5df491d6660ee5921c40f7cdcb9be13900238366e34c51e760", kill_on_drop: false }`
[INFO] [stdout] 2d4a92f535a3ab5df491d6660ee5921c40f7cdcb9be13900238366e34c51e760
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 51bc76bbeb6c071cdef346e1ea2ede7305f7a2ddc584047730698cecdc6039bd
[INFO] running `Command { std: "docker" "start" "-a" "51bc76bbeb6c071cdef346e1ea2ede7305f7a2ddc584047730698cecdc6039bd", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]     Checking rust-ini v0.13.0
[INFO] [stderr]     Checking serial_test v0.2.0
[INFO] [stderr]     Checking blctl v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/bls.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/cmdline.rs:25:54
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout]    |                                                      ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 25 - pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout] 25 + pub fn cmdline_parse (args: &str) -> std::io::Result<Cmdline> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/cmdline.rs:94:6
[INFO] [stdout]    |
[INFO] [stdout] 94 |     };
[INFO] [stdout]    |      ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bls.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:153:38
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::...
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut dyn CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:153:89
[INFO] [stdout]     |
[INFO] [stdout] 153 | ...params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &dyn Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:153:97
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::...
[INFO] [stdout]     |                                                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut dyn CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:185:35
[INFO] [stdout]     |
[INFO] [stdout] 185 | fn generic_cmdline_get (env: &mut CmdlineHandler, param: *const c_char) -> *mut CmdlineParam {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 185 | fn generic_cmdline_get (env: &mut dyn CmdlineHandler, param: *const c_char) -> *mut CmdlineParam {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:319:9
[INFO] [stdout]     |
[INFO] [stdout] 319 |     for mut line in data.iter() {
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:228:11
[INFO] [stdout]     |
[INFO] [stdout] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stdout]     |           ----^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:292:11
[INFO] [stdout]     |
[INFO] [stdout] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stdout]     |           ----^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/cmdline.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait VecOfTuplesAsDict {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] 36 |   fn get<'a> (&'a mut self, key: &String) -> Option<&'a mut CmdlineParam>;
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]   --> src/cshim.rs:92:3
[INFO] [stdout]    |
[INFO] [stdout] 92 |   Box::into_raw(env);
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: losing the pointer will leak memory
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |   let _ = Box::into_raw(env);
[INFO] [stdout]    |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:106:3
[INFO] [stdout]     |
[INFO] [stdout] 106 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:118:3
[INFO] [stdout]     |
[INFO] [stdout] 118 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 118 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:132:3
[INFO] [stdout]     |
[INFO] [stdout] 132 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 132 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:144:3
[INFO] [stdout]     |
[INFO] [stdout] 144 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 144 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:218:5
[INFO] [stdout]     |
[INFO] [stdout] 218 |     Box::into_raw(cmdline);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let _ = Box::into_raw(cmdline);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:227:3
[INFO] [stdout]     |
[INFO] [stdout] 227 |   Box::into_raw(cmdline);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 227 |   let _ = Box::into_raw(cmdline);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::from_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:234:11
[INFO] [stdout]     |
[INFO] [stdout] 234 |   unsafe{ Box::from_raw(cmdline) };
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: call `drop(Box::from_raw(ptr))` if you intend to drop the `Box`
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 234 |   unsafe{ let _ = Box::from_raw(cmdline); };
[INFO] [stdout]     |           +++++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::from_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 |   unsafe { Box::from_raw(entry) };
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: call `drop(Box::from_raw(ptr))` if you intend to drop the `Box`
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 257 |   unsafe { let _ = Box::from_raw(entry); };
[INFO] [stdout]     |            +++++++                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:276:3
[INFO] [stdout]     |
[INFO] [stdout] 276 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 276 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:297:3
[INFO] [stdout]     |
[INFO] [stdout] 297 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 297 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:314:3
[INFO] [stdout]     |
[INFO] [stdout] 314 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 314 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:347:3
[INFO] [stdout]     |
[INFO] [stdout] 347 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 347 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:359:3
[INFO] [stdout]     |
[INFO] [stdout] 359 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 359 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:371:3
[INFO] [stdout]     |
[INFO] [stdout] 371 |   Box::into_raw(list);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 371 |   let _ = Box::into_raw(list);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/cmdline.rs:25:54
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout]    |                                                      ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 25 - pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout] 25 + pub fn cmdline_parse (args: &str) -> std::io::Result<Cmdline> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/cmdline.rs:94:6
[INFO] [stdout]    |
[INFO] [stdout] 94 |     };
[INFO] [stdout]    |      ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/bls.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/main.rs:209:4
[INFO] [stdout]     |
[INFO] [stdout] 209 |   };
[INFO] [stdout]     |    ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bls.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:70:87
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn assert_invalid_command(expected_length: usize, args: &[String], max: bool, usage: &Fn()) {
[INFO] [stdout]    |                                                                                       ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn assert_invalid_command(expected_length: usize, args: &[String], max: bool, usage: &dyn Fn()) {
[INFO] [stdout]    |                                                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling quote v0.6.13
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:159:22
[INFO] [stdout]     |
[INFO] [stdout] 159 |   let provider: &mut CmdlineHandler = match &args[base-2] {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 159 |   let provider: &mut dyn CmdlineHandler = match &args[base-2] {
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:228:11
[INFO] [stdout]     |
[INFO] [stdout] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stdout]     |           ----^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:292:11
[INFO] [stdout]     |
[INFO] [stdout] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stdout]     |           ----^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:319:9
[INFO] [stdout]     |
[INFO] [stdout] 319 |     for mut line in data.iter() {
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:298:11
[INFO] [stdout]     |
[INFO] [stdout] 298 |       let mut env = match blenv::Environment::new(ENV_CLAMP, &blenv::get_env_path()) {
[INFO] [stdout]     |           ----^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/cmdline.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait VecOfTuplesAsDict {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] 36 |   fn get<'a> (&'a mut self, key: &String) -> Option<&'a mut CmdlineParam>;
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove` is never used
[INFO] [stdout]    --> src/bls.rs:312:10
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl BLSEntry {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 312 |   pub fn remove(&self, command: &str) -> std::io::Result<()> {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]    Compiling serial_test_derive v0.2.0
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/cmdline.rs:25:54
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout]    |                                                      ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 25 - pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout] 25 + pub fn cmdline_parse (args: &str) -> std::io::Result<Cmdline> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/cmdline.rs:94:6
[INFO] [stdout]    |
[INFO] [stdout] 94 |     };
[INFO] [stdout]    |      ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/bls.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/main.rs:209:4
[INFO] [stdout]     |
[INFO] [stdout] 209 |   };
[INFO] [stdout]     |    ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bls.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:70:87
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn assert_invalid_command(expected_length: usize, args: &[String], max: bool, usage: &Fn()) {
[INFO] [stdout]    |                                                                                       ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn assert_invalid_command(expected_length: usize, args: &[String], max: bool, usage: &dyn Fn()) {
[INFO] [stdout]    |                                                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/bls.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/cmdline.rs:25:54
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout]    |                                                      ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 25 - pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stdout] 25 + pub fn cmdline_parse (args: &str) -> std::io::Result<Cmdline> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/cmdline.rs:94:6
[INFO] [stdout]    |
[INFO] [stdout] 94 |     };
[INFO] [stdout]    |      ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bls.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 379 |                     func: &dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:153:38
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::...
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut dyn CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:153:89
[INFO] [stdout]     |
[INFO] [stdout] 153 | ...params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &dyn Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:153:97
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::...
[INFO] [stdout]     |                                                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut dyn CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stdout]     |                                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/cshim.rs:185:35
[INFO] [stdout]     |
[INFO] [stdout] 185 | fn generic_cmdline_get (env: &mut CmdlineHandler, param: *const c_char) -> *mut CmdlineParam {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 185 | fn generic_cmdline_get (env: &mut dyn CmdlineHandler, param: *const c_char) -> *mut CmdlineParam {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:159:22
[INFO] [stdout]     |
[INFO] [stdout] 159 |   let provider: &mut CmdlineHandler = match &args[base-2] {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 159 |   let provider: &mut dyn CmdlineHandler = match &args[base-2] {
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:228:11
[INFO] [stdout]     |
[INFO] [stdout] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stdout]     |           ----^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:292:11
[INFO] [stdout]     |
[INFO] [stdout] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stdout]     |           ----^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:319:9
[INFO] [stdout]     |
[INFO] [stdout] 319 |     for mut line in data.iter() {
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bls.rs:319:9
[INFO] [stdout]     |
[INFO] [stdout] 319 |     for mut line in data.iter() {
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:298:11
[INFO] [stdout]     |
[INFO] [stdout] 298 |       let mut env = match blenv::Environment::new(ENV_CLAMP, &blenv::get_env_path()) {
[INFO] [stdout]     |           ----^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:228:11
[INFO] [stdout]     |
[INFO] [stdout] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stdout]     |           ----^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/cmdline.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait VecOfTuplesAsDict {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] 36 |   fn get<'a> (&'a mut self, key: &String) -> Option<&'a mut CmdlineParam>;
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cmdline.rs:292:11
[INFO] [stdout]     |
[INFO] [stdout] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stdout]     |           ----^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/cmdline.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait VecOfTuplesAsDict {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] 36 |   fn get<'a> (&'a mut self, key: &String) -> Option<&'a mut CmdlineParam>;
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]   --> src/cshim.rs:92:3
[INFO] [stdout]    |
[INFO] [stdout] 92 |   Box::into_raw(env);
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: losing the pointer will leak memory
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |   let _ = Box::into_raw(env);
[INFO] [stdout]    |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:106:3
[INFO] [stdout]     |
[INFO] [stdout] 106 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:118:3
[INFO] [stdout]     |
[INFO] [stdout] 118 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 118 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:132:3
[INFO] [stdout]     |
[INFO] [stdout] 132 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 132 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:144:3
[INFO] [stdout]     |
[INFO] [stdout] 144 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 144 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:218:5
[INFO] [stdout]     |
[INFO] [stdout] 218 |     Box::into_raw(cmdline);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let _ = Box::into_raw(cmdline);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:227:3
[INFO] [stdout]     |
[INFO] [stdout] 227 |   Box::into_raw(cmdline);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 227 |   let _ = Box::into_raw(cmdline);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::from_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:234:11
[INFO] [stdout]     |
[INFO] [stdout] 234 |   unsafe{ Box::from_raw(cmdline) };
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: call `drop(Box::from_raw(ptr))` if you intend to drop the `Box`
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 234 |   unsafe{ let _ = Box::from_raw(cmdline); };
[INFO] [stdout]     |           +++++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::from_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 |   unsafe { Box::from_raw(entry) };
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: call `drop(Box::from_raw(ptr))` if you intend to drop the `Box`
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 257 |   unsafe { let _ = Box::from_raw(entry); };
[INFO] [stdout]     |            +++++++                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:276:3
[INFO] [stdout]     |
[INFO] [stdout] 276 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 276 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:297:3
[INFO] [stdout]     |
[INFO] [stdout] 297 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 297 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:314:3
[INFO] [stdout]     |
[INFO] [stdout] 314 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 314 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:347:3
[INFO] [stdout]     |
[INFO] [stdout] 347 |   Box::into_raw(env);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 347 |   let _ = Box::into_raw(env);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:359:3
[INFO] [stdout]     |
[INFO] [stdout] 359 |   Box::into_raw(entry);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 359 |   let _ = Box::into_raw(entry);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/cshim.rs:371:3
[INFO] [stdout]     |
[INFO] [stdout] 371 |   Box::into_raw(list);
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 371 |   let _ = Box::into_raw(list);
[INFO] [stdout]     |   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.20s
[INFO] running `Command { std: "docker" "inspect" "51bc76bbeb6c071cdef346e1ea2ede7305f7a2ddc584047730698cecdc6039bd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "51bc76bbeb6c071cdef346e1ea2ede7305f7a2ddc584047730698cecdc6039bd", kill_on_drop: false }`
[INFO] [stdout] 51bc76bbeb6c071cdef346e1ea2ede7305f7a2ddc584047730698cecdc6039bd
