[INFO] cloning repository https://github.com/garetht/rust-exercise-gen [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/garetht/rust-exercise-gen" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgaretht%2Frust-exercise-gen", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgaretht%2Frust-exercise-gen'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 5520ce157c51854af8860ffa76f193198234f821 [INFO] linting garetht/rust-exercise-gen against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgaretht%2Frust-exercise-gen" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/garetht/rust-exercise-gen [INFO] finished tweaking git repo https://github.com/garetht/rust-exercise-gen [INFO] tweaked toml for git repo https://github.com/garetht/rust-exercise-gen written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/garetht/rust-exercise-gen on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/garetht/rust-exercise-gen already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded protoc-bin-vendored v3.1.0 [INFO] [stderr] Downloaded protobuf-codegen v3.7.1 [INFO] [stderr] Downloaded dummy v0.9.1 [INFO] [stderr] Downloaded protobuf-support v3.7.1 [INFO] [stderr] Downloaded protobuf-parse v3.7.1 [INFO] [stderr] Downloaded protobuf v3.7.1 [INFO] [stderr] Downloaded fake v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-macos-aarch_64 v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-macos-x86_64 v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-linux-aarch_64 v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-win32 v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-linux-x86_64 v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-linux-ppcle_64 v3.1.0 [INFO] [stderr] Downloaded protoc-bin-vendored-linux-x86_32 v3.1.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f9b7d342ad429833428dc7247d949dbfac22a1876fb8685499bfb31f955841f4 [INFO] running `Command { std: "docker" "start" "-a" "f9b7d342ad429833428dc7247d949dbfac22a1876fb8685499bfb31f955841f4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f9b7d342ad429833428dc7247d949dbfac22a1876fb8685499bfb31f955841f4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f9b7d342ad429833428dc7247d949dbfac22a1876fb8685499bfb31f955841f4", kill_on_drop: false }` [INFO] [stdout] f9b7d342ad429833428dc7247d949dbfac22a1876fb8685499bfb31f955841f4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 5216cf9117daf78c55b53626443df424a692e8b2cab2ea270fe566103a717062 [INFO] running `Command { std: "docker" "start" "-a" "5216cf9117daf78c55b53626443df424a692e8b2cab2ea270fe566103a717062", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.92 [INFO] [stderr] Compiling libc v0.2.169 [INFO] [stderr] Compiling rustix v0.38.43 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling protobuf v3.7.1 [INFO] [stderr] Compiling bitflags v2.7.0 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Compiling once_cell v1.20.2 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling home v0.5.11 [INFO] [stderr] Compiling either v1.13.0 [INFO] [stderr] Compiling indexmap v2.7.0 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling anyhow v1.0.95 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Compiling getrandom v0.2.15 [INFO] [stderr] Compiling protoc-bin-vendored-linux-aarch_64 v3.1.0 [INFO] [stderr] Compiling protoc-bin-vendored-linux-x86_32 v3.1.0 [INFO] [stderr] Compiling protoc-bin-vendored-linux-x86_64 v3.1.0 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling protoc-bin-vendored-win32 v3.1.0 [INFO] [stderr] Compiling syn v2.0.96 [INFO] [stderr] Compiling protoc-bin-vendored-linux-ppcle_64 v3.1.0 [INFO] [stderr] Compiling protoc-bin-vendored-macos-x86_64 v3.1.0 [INFO] [stderr] Compiling protoc-bin-vendored-macos-aarch_64 v3.1.0 [INFO] [stderr] Checking deunicode v1.6.0 [INFO] [stderr] Checking itoa v1.0.14 [INFO] [stderr] Compiling protoc-bin-vendored v3.1.0 [INFO] [stderr] Compiling which v4.4.2 [INFO] [stderr] Compiling tempfile v3.15.0 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling darling_core v0.20.10 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling serde_derive v1.0.217 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling protobuf-support v3.7.1 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Compiling darling_macro v0.20.10 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling darling v0.20.10 [INFO] [stderr] Compiling dummy v0.9.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking fake v3.1.0 [INFO] [stderr] Checking serde v1.0.217 [INFO] [stderr] Compiling protobuf-parse v3.7.1 [INFO] [stderr] Checking serde_json v1.0.135 [INFO] [stderr] Compiling protobuf-codegen v3.7.1 [INFO] [stderr] Compiling rust-exercise-gen v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::io::Result` [INFO] [stdout] --> build.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> build.rs:3:10 [INFO] [stdout] | [INFO] [stdout] 3 | fn main() -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> build.rs:10:19 [INFO] [stdout] | [INFO] [stdout] 10 | .includes(&["src/protos"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["src/protos"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/exercise_assembly.rs:45:36 [INFO] [stdout] | [INFO] [stdout] 45 | programs_by_error.retain(|key, value| { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Write` is never constructed [INFO] [stdout] --> src/program_state.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum ExecutionSkeleton { [INFO] [stdout] | ----------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 31 | Write, // i.e. a push to an array, or assigning something? [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExecutionSkeleton` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Position` is never used [INFO] [stdout] --> src/variable.rs:61:10 [INFO] [stdout] | [INFO] [stdout] 61 | pub enum Position { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `outline` and `seed` are never read [INFO] [stdout] --> src/exercise_assembly.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 21 | struct OutputProgram { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | outline: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | seed: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OutputProgram` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/checker.rs:83:55 [INFO] [stdout] | [INFO] [stdout] 83 | message.level == String::from("error") && !message.code.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `message.code.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/checker.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | message.level == String::from("error") && !message.code.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `"error"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/formatter.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | Err(std::io::Error::new( [INFO] [stdout] | _____________^ [INFO] [stdout] 22 | | std::io::ErrorKind::Other, [INFO] [stdout] 23 | | format!( [INFO] [stdout] 24 | | "rustfmt failed: {}", [INFO] [stdout] 25 | | String::from_utf8_lossy(&output.stderr) [INFO] [stdout] 26 | | ), [INFO] [stdout] 27 | | )) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 21 ~ Err(std::io::Error::other( [INFO] [stdout] 22 ~ format!( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/namer.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | format!("{}", name) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/outline_generator.rs:38:51 [INFO] [stdout] | [INFO] [stdout] 38 | fn calculate_available_variables(program_outline: &Vec) -> AvailableVariables { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 38 - fn calculate_available_variables(program_outline: &Vec) -> AvailableVariables { [INFO] [stdout] 38 + fn calculate_available_variables(program_outline: &[OutlineStatement]) -> AvailableVariables { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/program_renderer.rs:57:14 [INFO] [stdout] | [INFO] [stdout] 57 | outline: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 57 - outline: &Vec, [INFO] [stdout] 57 + outline: &[OutlineStatement], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `suffix` is used as a loop counter [INFO] [stdout] --> src/program_renderer.rs:99:5 [INFO] [stdout] | [INFO] [stdout] 99 | for argument_type in argument_types { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (suffix, argument_type) in (1_i32..).zip(argument_types.into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/program_renderer.rs:166:13 [INFO] [stdout] | [INFO] [stdout] 166 | format!("{}", name.name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `name.name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().count()` on a `Vec` [INFO] [stdout] --> src/skeleton_generator.rs:68:34 [INFO] [stdout] | [INFO] [stdout] 68 | let history_length = history.iter().count(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `history.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_count [INFO] [stdout] = note: `#[warn(clippy::iter_count)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/variable.rs:44:33 [INFO] [stdout] | [INFO] [stdout] 44 | Reference(inner) => &*inner, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 44 - Reference(inner) => &*inner, [INFO] [stdout] 44 + Reference(inner) => inner, [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 44 | Reference(inner) => &**inner, [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/variable.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | / self.count_by_type_class() [INFO] [stdout] 48 | | .get(annotation) [INFO] [stdout] 49 | | .unwrap_or(&0) [INFO] [stdout] 50 | | .clone() [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 47 ~ *self.count_by_type_class() [INFO] [stdout] 48 + .get(annotation) [INFO] [stdout] 49 + .unwrap_or(&0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/variable.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | / if let Expression::Reference { .. } = &variable_to_move.right_expression { [INFO] [stdout] 181 | | true [INFO] [stdout] 182 | | } else { [INFO] [stdout] 183 | | false [INFO] [stdout] 184 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 180 - if let Expression::Reference { .. } = &variable_to_move.right_expression { [INFO] [stdout] 181 - true [INFO] [stdout] 182 - } else { [INFO] [stdout] 183 - false [INFO] [stdout] 184 - }; [INFO] [stdout] 180 + matches!(&variable_to_move.right_expression, Expression::Reference { .. }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/variable.rs:197:31 [INFO] [stdout] | [INFO] [stdout] 197 | create_call_or_assignment(&mut rng, available_variables, full_move_expr, &Defer) [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct pattern is not needed for a unit variant [INFO] [stdout] --> src/variable.rs:229:41 [INFO] [stdout] | [INFO] [stdout] 229 | } else if let TypeAnnotation::String { .. } = borrow_type { [INFO] [stdout] | ^^^^^^^ help: remove the struct pattern [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_struct_pattern [INFO] [stdout] = note: `#[warn(clippy::unneeded_struct_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/variable.rs:246:31 [INFO] [stdout] | [INFO] [stdout] 246 | create_call_or_assignment(&mut rng, available_variables, full_borrow_expr, mutability) [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessarily eager cloning of iterator items [INFO] [stdout] --> src/variable.rs:293:21 [INFO] [stdout] | [INFO] [stdout] 293 | let variables = variables [INFO] [stdout] | _____________________^ [INFO] [stdout] 294 | | .iter() [INFO] [stdout] 295 | | .cloned() [INFO] [stdout] 296 | | .take(number_to_print.into()) [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_overeager_cloned [INFO] [stdout] = note: `#[warn(clippy::iter_overeager_cloned)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 294 ~ .iter() [INFO] [stdout] 295 + .take(number_to_print.into()).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/exercise_assembly.rs:194:59 [INFO] [stdout] | [INFO] [stdout] 194 | let (json_messages, human_messages) = check_rust_code(&*formatted_program).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&formatted_program` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/exercise_assembly.rs:213:34 [INFO] [stdout] | [INFO] [stdout] 213 | let skeleton = fill_skeleton(&mut rng); [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/exercise_assembly.rs:214:55 [INFO] [stdout] | [INFO] [stdout] 214 | let (outline, available_variables) = fill_outline(&mut rng, &skeleton); [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/exercise_assembly.rs:215:44 [INFO] [stdout] | [INFO] [stdout] 215 | let program = render_program(&outline, &mut rng); [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/exercise_assembly.rs:217:52 [INFO] [stdout] | [INFO] [stdout] 217 | let formatted_program = match format_rust_code(&*program.join("\n")) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&program.join("\n")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | generate_and_write_programs_to_file(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = generate_and_write_programs_to_file(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/exercise_assembly.rs:45:36 [INFO] [stdout] | [INFO] [stdout] 45 | programs_by_error.retain(|key, value| { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Write` is never constructed [INFO] [stdout] --> src/program_state.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum ExecutionSkeleton { [INFO] [stdout] | ----------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 31 | Write, // i.e. a push to an array, or assigning something? [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExecutionSkeleton` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Position` is never used [INFO] [stdout] --> src/variable.rs:61:10 [INFO] [stdout] | [INFO] [stdout] 61 | pub enum Position { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `outline` and `seed` are never read [INFO] [stdout] --> src/exercise_assembly.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 21 | struct OutputProgram { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | outline: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | seed: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OutputProgram` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/checker.rs:83:55 [INFO] [stdout] | [INFO] [stdout] 83 | message.level == String::from("error") && !message.code.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `message.code.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/checker.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | message.level == String::from("error") && !message.code.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `"error"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/formatter.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | Err(std::io::Error::new( [INFO] [stdout] | _____________^ [INFO] [stdout] 22 | | std::io::ErrorKind::Other, [INFO] [stdout] 23 | | format!( [INFO] [stdout] 24 | | "rustfmt failed: {}", [INFO] [stdout] 25 | | String::from_utf8_lossy(&output.stderr) [INFO] [stdout] 26 | | ), [INFO] [stdout] 27 | | )) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 21 ~ Err(std::io::Error::other( [INFO] [stdout] 22 ~ format!( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/namer.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | format!("{}", name) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/outline_generator.rs:38:51 [INFO] [stdout] | [INFO] [stdout] 38 | fn calculate_available_variables(program_outline: &Vec) -> AvailableVariables { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 38 - fn calculate_available_variables(program_outline: &Vec) -> AvailableVariables { [INFO] [stdout] 38 + fn calculate_available_variables(program_outline: &[OutlineStatement]) -> AvailableVariables { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/program_renderer.rs:57:14 [INFO] [stdout] | [INFO] [stdout] 57 | outline: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 57 - outline: &Vec, [INFO] [stdout] 57 + outline: &[OutlineStatement], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `suffix` is used as a loop counter [INFO] [stdout] --> src/program_renderer.rs:99:5 [INFO] [stdout] | [INFO] [stdout] 99 | for argument_type in argument_types { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (suffix, argument_type) in (1_i32..).zip(argument_types.into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/program_renderer.rs:166:13 [INFO] [stdout] | [INFO] [stdout] 166 | format!("{}", name.name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `name.name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().count()` on a `Vec` [INFO] [stdout] --> src/skeleton_generator.rs:68:34 [INFO] [stdout] | [INFO] [stdout] 68 | let history_length = history.iter().count(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `history.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_count [INFO] [stdout] = note: `#[warn(clippy::iter_count)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/variable.rs:44:33 [INFO] [stdout] | [INFO] [stdout] 44 | Reference(inner) => &*inner, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 44 - Reference(inner) => &*inner, [INFO] [stdout] 44 + Reference(inner) => inner, [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 44 | Reference(inner) => &**inner, [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/variable.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | / self.count_by_type_class() [INFO] [stdout] 48 | | .get(annotation) [INFO] [stdout] 49 | | .unwrap_or(&0) [INFO] [stdout] 50 | | .clone() [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 47 ~ *self.count_by_type_class() [INFO] [stdout] 48 + .get(annotation) [INFO] [stdout] 49 + .unwrap_or(&0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/variable.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | / if let Expression::Reference { .. } = &variable_to_move.right_expression { [INFO] [stdout] 181 | | true [INFO] [stdout] 182 | | } else { [INFO] [stdout] 183 | | false [INFO] [stdout] 184 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 180 - if let Expression::Reference { .. } = &variable_to_move.right_expression { [INFO] [stdout] 181 - true [INFO] [stdout] 182 - } else { [INFO] [stdout] 183 - false [INFO] [stdout] 184 - }; [INFO] [stdout] 180 + matches!(&variable_to_move.right_expression, Expression::Reference { .. }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/variable.rs:197:31 [INFO] [stdout] | [INFO] [stdout] 197 | create_call_or_assignment(&mut rng, available_variables, full_move_expr, &Defer) [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct pattern is not needed for a unit variant [INFO] [stdout] --> src/variable.rs:229:41 [INFO] [stdout] | [INFO] [stdout] 229 | } else if let TypeAnnotation::String { .. } = borrow_type { [INFO] [stdout] | ^^^^^^^ help: remove the struct pattern [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_struct_pattern [INFO] [stdout] = note: `#[warn(clippy::unneeded_struct_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/variable.rs:246:31 [INFO] [stdout] | [INFO] [stdout] 246 | create_call_or_assignment(&mut rng, available_variables, full_borrow_expr, mutability) [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessarily eager cloning of iterator items [INFO] [stdout] --> src/variable.rs:293:21 [INFO] [stdout] | [INFO] [stdout] 293 | let variables = variables [INFO] [stdout] | _____________________^ [INFO] [stdout] 294 | | .iter() [INFO] [stdout] 295 | | .cloned() [INFO] [stdout] 296 | | .take(number_to_print.into()) [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_overeager_cloned [INFO] [stdout] = note: `#[warn(clippy::iter_overeager_cloned)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 294 ~ .iter() [INFO] [stdout] 295 + .take(number_to_print.into()).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/exercise_assembly.rs:194:59 [INFO] [stdout] | [INFO] [stdout] 194 | let (json_messages, human_messages) = check_rust_code(&*formatted_program).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&formatted_program` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/exercise_assembly.rs:213:34 [INFO] [stdout] | [INFO] [stdout] 213 | let skeleton = fill_skeleton(&mut rng); [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/exercise_assembly.rs:214:55 [INFO] [stdout] | [INFO] [stdout] 214 | let (outline, available_variables) = fill_outline(&mut rng, &skeleton); [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/exercise_assembly.rs:215:44 [INFO] [stdout] | [INFO] [stdout] 215 | let program = render_program(&outline, &mut rng); [INFO] [stdout] | ^^^^^^^^ help: change this to: `rng` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/exercise_assembly.rs:217:52 [INFO] [stdout] | [INFO] [stdout] 217 | let formatted_program = match format_rust_code(&*program.join("\n")) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&program.join("\n")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | generate_and_write_programs_to_file(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = generate_and_write_programs_to_file(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 54.79s [INFO] running `Command { std: "docker" "inspect" "5216cf9117daf78c55b53626443df424a692e8b2cab2ea270fe566103a717062", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5216cf9117daf78c55b53626443df424a692e8b2cab2ea270fe566103a717062", kill_on_drop: false }` [INFO] [stdout] 5216cf9117daf78c55b53626443df424a692e8b2cab2ea270fe566103a717062