[INFO] fetching crate blctl 0.1.2...
[INFO] checking blctl-0.1.2 against master#e59540968e0c6fc3c37d92a639b83fc8fcee5e81 for pr-114559
[INFO] extracting crate blctl 0.1.2 into /workspace/builds/worker-7-tc1/source
[INFO] validating manifest of crates.io crate blctl 0.1.2 on toolchain e59540968e0c6fc3c37d92a639b83fc8fcee5e81
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e59540968e0c6fc3c37d92a639b83fc8fcee5e81" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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-7-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e59540968e0c6fc3c37d92a639b83fc8fcee5e81" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e59540968e0c6fc3c37d92a639b83fc8fcee5e81" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serial_test v0.2.0
[INFO] [stderr]   Downloaded serial_test_derive v0.2.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:5c16f4e6c37141f9fef0bc86f7a492d732943053e42aab8461035881e3f53823" "/opt/rustwide/cargo-home/bin/cargo" "+e59540968e0c6fc3c37d92a639b83fc8fcee5e81" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b93649f233ce279c15b8c65078aa8dec0e0b8c8615e7518ac876803032d1e252
[INFO] running `Command { std: "docker" "start" "-a" "b93649f233ce279c15b8c65078aa8dec0e0b8c8615e7518ac876803032d1e252", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b93649f233ce279c15b8c65078aa8dec0e0b8c8615e7518ac876803032d1e252", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b93649f233ce279c15b8c65078aa8dec0e0b8c8615e7518ac876803032d1e252", kill_on_drop: false }`
[INFO] [stdout] b93649f233ce279c15b8c65078aa8dec0e0b8c8615e7518ac876803032d1e252
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:5c16f4e6c37141f9fef0bc86f7a492d732943053e42aab8461035881e3f53823" "/opt/rustwide/cargo-home/bin/cargo" "+e59540968e0c6fc3c37d92a639b83fc8fcee5e81" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 921c3be9a6a426fa95f40dcd68b745ce3726a893673b6cfa2fe2c8cc5cbfb8f2
[INFO] running `Command { std: "docker" "start" "-a" "921c3be9a6a426fa95f40dcd68b745ce3726a893673b6cfa2fe2c8cc5cbfb8f2", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[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: 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)]` 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)]` 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: 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::io::Re...
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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 | ...r, 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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::io::Re...
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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)]` 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: 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]     = note: `#[warn(unused_must_use)]` on by default
[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: 13 warnings emitted
[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)]` 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)]` 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/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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: 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: 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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: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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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)]` 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 `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]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 12 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling quote v0.6.13
[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)]` 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)]` 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/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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: 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: 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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: 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)]` 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)]` 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: 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::io::Re...
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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 | ...r, 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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::io::Re...
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: 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)]` 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)]` 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/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/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: 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: 11 warnings emitted
[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]     = note: `#[warn(unused_must_use)]` on by default
[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: 13 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 4.88s
[INFO] running `Command { std: "docker" "inspect" "921c3be9a6a426fa95f40dcd68b745ce3726a893673b6cfa2fe2c8cc5cbfb8f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "921c3be9a6a426fa95f40dcd68b745ce3726a893673b6cfa2fe2c8cc5cbfb8f2", kill_on_drop: false }`
[INFO] [stdout] 921c3be9a6a426fa95f40dcd68b745ce3726a893673b6cfa2fe2c8cc5cbfb8f2
