[INFO] fetching crate blctl 0.1.2...
[INFO] checking blctl-0.1.2 against master#b0696a5160711c068cb1f01b7437db7990d15750 for pr-121848
[INFO] extracting crate blctl 0.1.2 into /workspace/builds/worker-5-tc1/source
[INFO] validating manifest of crates.io crate blctl 0.1.2 on toolchain b0696a5160711c068cb1f01b7437db7990d15750
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b0696a5160711c068cb1f01b7437db7990d15750" "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-5-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b0696a5160711c068cb1f01b7437db7990d15750" "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" "+b0696a5160711c068cb1f01b7437db7990d15750" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+b0696a5160711c068cb1f01b7437db7990d15750" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f127235590f884b6e5527b36691eb160e454cd6c4486627d64707e20c0a3d70b
[INFO] running `Command { std: "docker" "start" "-a" "f127235590f884b6e5527b36691eb160e454cd6c4486627d64707e20c0a3d70b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f127235590f884b6e5527b36691eb160e454cd6c4486627d64707e20c0a3d70b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f127235590f884b6e5527b36691eb160e454cd6c4486627d64707e20c0a3d70b", kill_on_drop: false }`
[INFO] [stdout] f127235590f884b6e5527b36691eb160e454cd6c4486627d64707e20c0a3d70b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+b0696a5160711c068cb1f01b7437db7990d15750" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8f2c988d9457d56d15060e5012082ed5e015fd06afc4c445b3eb2e7bca809bd7
[INFO] running `Command { std: "docker" "start" "-a" "8f2c988d9457d56d15060e5012082ed5e015fd06afc4c445b3eb2e7bca809bd7", kill_on_drop: false }`
[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: if this is an object-safe 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::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: if this is an object-safe 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 | ...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: if this is an object-safe 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::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: if this is an object-safe 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe 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)]` 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)]` on by default
[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: 14 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: if this is an object-safe 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: 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: if this is an object-safe 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: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: if this is an object-safe 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)]` 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)]` 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] [stdout] warning: 13 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: 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/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: if this is an object-safe 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: 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: if this is an object-safe 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/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: if this is an object-safe 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::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: if this is an object-safe 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 | ...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: if this is an object-safe 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::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: if this is an object-safe 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe 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)]` 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]     = 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: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: 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)]` on by default
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 12 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: 14 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.82s
[INFO] running `Command { std: "docker" "inspect" "8f2c988d9457d56d15060e5012082ed5e015fd06afc4c445b3eb2e7bca809bd7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f2c988d9457d56d15060e5012082ed5e015fd06afc4c445b3eb2e7bca809bd7", kill_on_drop: false }`
[INFO] [stdout] 8f2c988d9457d56d15060e5012082ed5e015fd06afc4c445b3eb2e7bca809bd7
