[INFO] crate blctl 0.1.2 is already in cache
[INFO] checking blctl-0.1.2 against master#bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc for pr-70917
[INFO] extracting crate blctl 0.1.2 into /workspace/builds/worker-2/source
[INFO] validating manifest of crates.io crate blctl 0.1.2 on toolchain bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "read-manifest" "--manifest-path" "Cargo.toml"`
[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-2/source/Cargo.toml
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"`
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stdout] 30ee6dab8a04970a15ec1fceb97887a60a1782dbd07c52a371163e0775f1b9fa
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `"docker" "start" "-a" "30ee6dab8a04970a15ec1fceb97887a60a1782dbd07c52a371163e0775f1b9fa"`
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]     Checking rust-ini v0.13.0
[INFO] [stderr]     Checking serial_test v0.2.0
[INFO] [stderr]     Checking tempfile v3.1.0
[INFO] [stderr]     Checking blctl v0.1.2 (/opt/rustwide/workdir)
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/bls.rs:379:28
[INFO] [stderr]     |
[INFO] [stderr] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around type
[INFO] [stderr]   --> src/cmdline.rs:25:54
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stderr]    |                                                      ^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]   --> src/cmdline.rs:52:11
[INFO] [stderr]    |
[INFO] [stderr] 52 |     match { self.iter().position(|x| &x.0 == key) } {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_braces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:59:15
[INFO] [stderr]    |
[INFO] [stderr] 59 |     let pos = { self.iter().position(|(k,_)| {k == &key}) };
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:67:19
[INFO] [stderr]    |
[INFO] [stderr] 67 |         let len = { self.len() };
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]    --> src/cmdline.rs:246:11
[INFO] [stderr]     |
[INFO] [stderr] 246 |     match { cmdline.take_from_key(param) } {
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:153:38
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:153:89
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stderr]     |                                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:153:97
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stderr]     |                                                                                                 ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:185:35
[INFO] [stderr]     |
[INFO] [stderr] 185 | fn generic_cmdline_get (env: &mut CmdlineHandler, param: *const c_char) -> *mut CmdlineParam {
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:202:13
[INFO] [stderr]     |
[INFO] [stderr] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:319:9
[INFO] [stderr]     |
[INFO] [stderr] 319 |     for mut line in data.iter() {
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:228:11
[INFO] [stderr]     |
[INFO] [stderr] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stderr]     |           ----^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:292:11
[INFO] [stderr]     |
[INFO] [stderr] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stderr]     |           ----^^^^^^^^^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around type
[INFO] [stderr]   --> src/cmdline.rs:25:54
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stderr]    |                                                      ^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]   --> src/cmdline.rs:52:11
[INFO] [stderr]    |
[INFO] [stderr] 52 |     match { self.iter().position(|x| &x.0 == key) } {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_braces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:59:15
[INFO] [stderr]    |
[INFO] [stderr] 59 |     let pos = { self.iter().position(|(k,_)| {k == &key}) };
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:67:19
[INFO] [stderr]    |
[INFO] [stderr] 67 |         let len = { self.len() };
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]    --> src/cmdline.rs:246:11
[INFO] [stderr]     |
[INFO] [stderr] 246 |     match { cmdline.take_from_key(param) } {
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/bls.rs:379:28
[INFO] [stderr]     |
[INFO] [stderr] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/main.rs:70:87
[INFO] [stderr]    |
[INFO] [stderr] 70 | fn assert_invalid_command(expected_length: usize, args: &[String], max: bool, usage: &Fn()) {
[INFO] [stderr]    |                                                                                       ^^^^ help: use `dyn`: `dyn Fn()`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/main.rs:159:22
[INFO] [stderr]     |
[INFO] [stderr] 159 |   let provider: &mut CmdlineHandler = match &args[base-2] {
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:298:11
[INFO] [stderr]     |
[INFO] [stderr] 298 |       let mut env = match blenv::Environment::new(ENV_CLAMP, &blenv::get_env_path()) {
[INFO] [stderr]     |           ----^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:228:11
[INFO] [stderr]     |
[INFO] [stderr] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stderr]     |           ----^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:292:11
[INFO] [stderr]     |
[INFO] [stderr] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stderr]     |           ----^^^^^^^^^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:202:13
[INFO] [stderr]     |
[INFO] [stderr] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:319:9
[INFO] [stderr]     |
[INFO] [stderr] 319 |     for mut line in data.iter() {
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `remove`
[INFO] [stderr]    --> src/bls.rs:312:3
[INFO] [stderr]     |
[INFO] [stderr] 312 |   pub fn remove(&self, command: &str) -> std::io::Result<()> {
[INFO] [stderr]     |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr]    Compiling quote v0.6.13
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]    Compiling serial_test_derive v0.2.0
[INFO] [stderr] warning: unnecessary parentheses around type
[INFO] [stderr]   --> src/cmdline.rs:25:54
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stderr]    |                                                      ^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]   --> src/cmdline.rs:52:11
[INFO] [stderr]    |
[INFO] [stderr] 52 |     match { self.iter().position(|x| &x.0 == key) } {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_braces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:59:15
[INFO] [stderr]    |
[INFO] [stderr] 59 |     let pos = { self.iter().position(|(k,_)| {k == &key}) };
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:67:19
[INFO] [stderr]    |
[INFO] [stderr] 67 |         let len = { self.len() };
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]    --> src/cmdline.rs:246:11
[INFO] [stderr]     |
[INFO] [stderr] 246 |     match { cmdline.take_from_key(param) } {
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/bls.rs:379:28
[INFO] [stderr]     |
[INFO] [stderr] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/main.rs:70:87
[INFO] [stderr]    |
[INFO] [stderr] 70 | fn assert_invalid_command(expected_length: usize, args: &[String], max: bool, usage: &Fn()) {
[INFO] [stderr]    |                                                                                       ^^^^ help: use `dyn`: `dyn Fn()`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/main.rs:159:22
[INFO] [stderr]     |
[INFO] [stderr] 159 |   let provider: &mut CmdlineHandler = match &args[base-2] {
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/bls.rs:379:28
[INFO] [stderr]     |
[INFO] [stderr] 379 |                     func: &Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>) -> std::io::Result<()> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn (&mut BLSEntry, &[String]) -> std::io::Result<()>`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around type
[INFO] [stderr]   --> src/cmdline.rs:25:54
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub fn cmdline_parse (args: &str) -> std::io::Result<(Cmdline)> {
[INFO] [stderr]    |                                                      ^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]   --> src/cmdline.rs:52:11
[INFO] [stderr]    |
[INFO] [stderr] 52 |     match { self.iter().position(|x| &x.0 == key) } {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_braces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:59:15
[INFO] [stderr]    |
[INFO] [stderr] 59 |     let pos = { self.iter().position(|(k,_)| {k == &key}) };
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around assigned value
[INFO] [stderr]   --> src/cmdline.rs:67:19
[INFO] [stderr]    |
[INFO] [stderr] 67 |         let len = { self.len() };
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around `match` scrutinee expression
[INFO] [stderr]    --> src/cmdline.rs:246:11
[INFO] [stderr]     |
[INFO] [stderr] 246 |     match { cmdline.take_from_key(param) } {
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:153:38
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:153:89
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stderr]     |                                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:153:97
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn generic_cmdline_handler(env: &mut CmdlineHandler, params: *const *const c_char, op: &Fn(&mut CmdlineHandler, &[String]) -> std::io::Result<()>) -> c_char {
[INFO] [stderr]     |                                                                                                 ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/cshim.rs:185:35
[INFO] [stderr]     |
[INFO] [stderr] 185 | fn generic_cmdline_get (env: &mut CmdlineHandler, param: *const c_char) -> *mut CmdlineParam {
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^ help: use `dyn`: `dyn CmdlineHandler`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:298:11
[INFO] [stderr]     |
[INFO] [stderr] 298 |       let mut env = match blenv::Environment::new(ENV_CLAMP, &blenv::get_env_path()) {
[INFO] [stderr]     |           ----^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:202:13
[INFO] [stderr]     |
[INFO] [stderr] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:319:9
[INFO] [stderr]     |
[INFO] [stderr] 319 |     for mut line in data.iter() {
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:228:11
[INFO] [stderr]     |
[INFO] [stderr] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stderr]     |           ----^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:228:11
[INFO] [stderr]     |
[INFO] [stderr] 228 |       let mut values = cmdline.entry_or_insert(set_key, Vec::new());
[INFO] [stderr]     |           ----^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:292:11
[INFO] [stderr]     |
[INFO] [stderr] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stderr]     |           ----^^^^^^^^^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/cmdline.rs:292:11
[INFO] [stderr]     |
[INFO] [stderr] 292 |       let mut params_for_key = cmdline.entry_or_insert(rem_key, rem_values.clone());
[INFO] [stderr]     |           ----^^^^^^^^^^^^^^
[INFO] [stderr]     |           |
[INFO] [stderr]     |           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:202:13
[INFO] [stderr]     |
[INFO] [stderr] 202 |         let mut line: Vec<&str> = line.trim().splitn(2, " ").collect();
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bls.rs:319:9
[INFO] [stderr]     |
[INFO] [stderr] 319 |     for mut line in data.iter() {
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 16.84s
[INFO] running `"docker" "inspect" "30ee6dab8a04970a15ec1fceb97887a60a1782dbd07c52a371163e0775f1b9fa"`
[INFO] running `"docker" "rm" "-f" "30ee6dab8a04970a15ec1fceb97887a60a1782dbd07c52a371163e0775f1b9fa"`
[INFO] [stdout] 30ee6dab8a04970a15ec1fceb97887a60a1782dbd07c52a371163e0775f1b9fa
