[INFO] cloning repository https://github.com/r/morph [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/r/morph" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fr%2Fmorph", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fr%2Fmorph'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 8f8e13d82dcf6ce637292a3a2df666b90ea79714 [INFO] linting r/morph against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fr%2Fmorph" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/r/morph [INFO] finished tweaking git repo https://github.com/r/morph [INFO] tweaked toml for git repo https://github.com/r/morph written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/r/morph 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/r/morph 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 nom_locate v4.2.0 [INFO] [stderr] Downloaded gherkin v0.14.0 [INFO] [stderr] Downloaded sealed v0.5.0 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.109 [INFO] [stderr] Downloaded rmcp-macros v0.16.0 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.109 [INFO] [stderr] Downloaded wasm-bindgen v0.2.109 [INFO] [stderr] Downloaded js-sys v0.3.86 [INFO] [stderr] Downloaded cucumber v0.21.1 [INFO] [stderr] Downloaded synthez-core v0.3.1 [INFO] [stderr] Downloaded synthez v0.3.1 [INFO] [stderr] Downloaded synthez-codegen v0.3.1 [INFO] [stderr] Downloaded cucumber-codegen v0.21.1 [INFO] [stderr] Downloaded cucumber-expressions v0.3.0 [INFO] [stderr] Downloaded typed-builder-macro v0.15.2 [INFO] [stderr] Downloaded typed-builder v0.15.2 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.109 [INFO] [stderr] Downloaded inventory v0.3.22 [INFO] [stderr] Downloaded rmcp v0.16.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 65d75f7f5c6aa7445e9a56fce213bd585115e7c2b7f44db42b676783530a93ab [INFO] running `Command { std: "docker" "start" "-a" "65d75f7f5c6aa7445e9a56fce213bd585115e7c2b7f44db42b676783530a93ab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "65d75f7f5c6aa7445e9a56fce213bd585115e7c2b7f44db42b676783530a93ab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "65d75f7f5c6aa7445e9a56fce213bd585115e7c2b7f44db42b676783530a93ab", kill_on_drop: false }` [INFO] [stdout] 65d75f7f5c6aa7445e9a56fce213bd585115e7c2b7f44db42b676783530a93ab [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] bb186c0c40370d6a290af8eb64858bb6cd20663e1d5ace5f3661ef77f655d438 [INFO] running `Command { std: "docker" "start" "-a" "bb186c0c40370d6a290af8eb64858bb6cd20663e1d5ace5f3661ef77f655d438", kill_on_drop: false }` [INFO] [stderr] Checking memchr v2.8.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking slab v0.4.12 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking rustix v1.1.3 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Checking wait-timeout v0.2.1 [INFO] [stderr] Checking predicates-core v1.0.10 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Compiling sealed v0.5.0 [INFO] [stderr] Checking difflib v0.4.0 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Compiling derive_more v0.99.20 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Checking axum-core v0.5.6 [INFO] [stderr] Compiling bytecount v0.6.9 [INFO] [stderr] Checking termtree v0.5.1 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling synthez-core v0.3.1 [INFO] [stderr] Compiling assert_cmd v2.1.2 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Compiling unsafe-libyaml v0.2.11 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling peg-runtime v0.6.3 [INFO] [stderr] Compiling synthez-codegen v0.3.1 [INFO] [stderr] Compiling gherkin v0.14.0 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Compiling peg-macros v0.6.3 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking terminal_size v0.4.3 [INFO] [stderr] Checking tempfile v3.25.0 [INFO] [stderr] Checking predicates-tree v1.0.13 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking clap_builder v4.5.60 [INFO] [stderr] Checking predicates v3.1.4 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling typed-builder-macro v0.15.2 [INFO] [stderr] Checking serde_path_to_error v0.1.20 [INFO] [stderr] Compiling nom_locate v4.2.0 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling regex-syntax v0.7.5 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking normalize-line-endings v0.3.0 [INFO] [stderr] Checking unicode-linebreak v0.1.5 [INFO] [stderr] Checking smawk v0.3.2 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Checking textwrap v0.16.2 [INFO] [stderr] Checking peg v0.6.3 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling synthez v0.3.1 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Checking dyn-clone v1.0.20 [INFO] [stderr] Compiling rmcp v0.16.0 [INFO] [stderr] Checking futures-executor v0.3.32 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Checking hyper-util v0.1.20 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Checking futures v0.3.32 [INFO] [stderr] Compiling schemars_derive v1.2.1 [INFO] [stderr] Compiling morph-cli v0.1.0 (/opt/rustwide/workdir/morph-cli) [INFO] [stderr] Checking typed-builder v0.15.2 [INFO] [stderr] Compiling rmcp-macros v0.16.0 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking clap v4.5.60 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking axum v0.8.8 [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-cli/build.rs:230:26 [INFO] [stdout] | [INFO] [stdout] 230 | let expect_success = step.expect_exit.map_or(true, |c| c == 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 230 - let expect_success = step.expect_exit.map_or(true, |c| c == 0); [INFO] [stdout] 230 + let expect_success = step.expect_exit.is_none_or(|c| c == 0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling smart-default v0.7.1 [INFO] [stderr] Checking drain_filter_polyfill v0.1.3 [INFO] [stderr] Checking humantime v2.3.0 [INFO] [stderr] Checking quick-error v1.2.3 [INFO] [stderr] Checking inventory v0.3.22 [INFO] [stderr] Compiling pastey v0.2.1 [INFO] [stderr] Checking bstr v1.12.1 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking rusty-fork v0.3.1 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking bit-set v0.8.0 [INFO] [stderr] Checking predicates v2.1.5 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking rand_xorshift v0.4.0 [INFO] [stderr] Checking unarray v0.1.4 [INFO] [stderr] Checking morph-e2e v0.1.0 (/opt/rustwide/workdir/morph-e2e) [INFO] [stderr] Checking globset v0.4.18 [INFO] [stderr] Compiling lazy-regex-proc_macros v3.6.0 [INFO] [stderr] Checking schemars v1.2.1 [INFO] [stderr] Checking ignore v0.4.25 [INFO] [stderr] Checking cucumber-expressions v0.3.0 [INFO] [stderr] Checking morph-core v0.1.0 (/opt/rustwide/workdir/morph-core) [INFO] [stderr] Checking globwalk v0.9.1 [INFO] [stderr] Checking lazy-regex v3.6.0 [INFO] [stderr] Compiling cucumber-codegen v0.21.1 [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> morph-core/src/working.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(obj)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 161 - if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] 161 + if let Ok(obj) = object_from_file(path, kind) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> morph-core/src/working.rs:194:13 [INFO] [stdout] | [INFO] [stdout] 194 | if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] help: consider matching on `Ok(obj)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 194 - if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] 194 + if let Ok(obj) = object_from_file(path, kind) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> morph-core/src/working.rs:312:1 [INFO] [stdout] | [INFO] [stdout] 312 | / fn add_directory( [INFO] [stdout] 313 | | dir: &Path, [INFO] [stdout] 314 | | morph_dir: &Path, [INFO] [stdout] 315 | | morph_prompts: &Path, [INFO] [stdout] ... | [INFO] [stdout] 322 | | skip_morph: bool, [INFO] [stdout] 323 | | ) -> Result<(), MorphError> { [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> morph-core/src/commit.rs:84:1 [INFO] [stdout] | [INFO] [stdout] 84 | / pub fn create_tree_commit( [INFO] [stdout] 85 | | store: &dyn Store, [INFO] [stdout] 86 | | repo_root: &Path, [INFO] [stdout] 87 | | pipeline_hash: Option<&Hash>, [INFO] [stdout] ... | [INFO] [stdout] 92 | | morph_version: Option<&str>, [INFO] [stdout] 93 | | ) -> Result { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> morph-core/src/commit.rs:223:1 [INFO] [stdout] | [INFO] [stdout] 223 | / pub fn create_merge_commit_full( [INFO] [stdout] 224 | | store: &dyn Store, [INFO] [stdout] 225 | | other_branch: &str, [INFO] [stdout] 226 | | merged_pipeline_hash: &Hash, [INFO] [stdout] ... | [INFO] [stdout] 232 | | morph_version: Option<&str>, [INFO] [stdout] 233 | | ) -> Result { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> morph-core/src/commit.rs:238:1 [INFO] [stdout] | [INFO] [stdout] 238 | / pub fn create_merge_commit_with_retirement( [INFO] [stdout] 239 | | store: &dyn Store, [INFO] [stdout] 240 | | other_branch: &str, [INFO] [stdout] 241 | | merged_pipeline_hash: &Hash, [INFO] [stdout] ... | [INFO] [stdout] 248 | | retired_metrics: Option<&[String]>, [INFO] [stdout] 249 | | ) -> Result { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-core/src/metrics.rs:78:32 [INFO] [stdout] | [INFO] [stdout] 78 | parent.iter().all(|(k, v)| merged.get(k).map_or(false, |m| *m >= *v)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 78 - parent.iter().all(|(k, v)| merged.get(k).map_or(false, |m| *m >= *v)) [INFO] [stdout] 78 + parent.iter().all(|(k, v)| merged.get(k).is_some_and(|m| *m >= *v)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-core/src/metrics.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / merged.get(k).map_or(false, |m| { [INFO] [stdout] 96 | | let dir = directions.get(k.as_str()).copied().unwrap_or("maximize"); [INFO] [stdout] 97 | | if dir == "minimize" { [INFO] [stdout] 98 | | *m <= *v [INFO] [stdout] ... | [INFO] [stdout] 102 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 95 - merged.get(k).map_or(false, |m| { [INFO] [stdout] 95 + merged.get(k).is_some_and(|m| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> morph-core/src/migrate.rs:52:32 [INFO] [stdout] | [INFO] [stdout] 52 | if object_type_ord(&obj) != type_ord { [INFO] [stdout] | ^^^^ help: change this to: `obj` [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: this `if` statement can be collapsed [INFO] [stdout] --> morph-core/src/migrate.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | / if content.len() == 64 { [INFO] [stdout] 70 | | if Hash::from_hex(&content).is_ok() { [INFO] [stdout] 71 | | if let Some(&new_h) = map.get(&content) { [INFO] [stdout] 72 | | gix.ref_write(&format!("heads/{}", name), &new_h)?; [INFO] [stdout] ... | [INFO] [stdout] 75 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 69 ~ if content.len() == 64 [INFO] [stdout] 70 ~ && Hash::from_hex(&content).is_ok() { [INFO] [stdout] 71 | if let Some(&new_h) = map.get(&content) { [INFO] [stdout] 72 | gix.ref_write(&format!("heads/{}", name), &new_h)?; [INFO] [stdout] 73 | } [INFO] [stdout] 74 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking cucumber v0.21.1 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking morph-serve v0.1.0 (/opt/rustwide/workdir/morph-serve) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> morph-serve/src/lib.rs:204:17 [INFO] [stdout] | [INFO] [stdout] 204 | node_type: node_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> morph-serve/src/lib.rs:204:17 [INFO] [stdout] | [INFO] [stdout] 204 | node_type: node_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking proptest v1.10.0 [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | cmd.arg(format!("{target_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `target_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | cmd.arg(format!("{target_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `target_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:152:17 [INFO] [stdout] | [INFO] [stdout] 152 | cmd.arg(format!("{prog_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `prog_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | cmd.arg(format!("{suite_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `suite_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:218:17 [INFO] [stdout] | [INFO] [stdout] 218 | cmd.arg(format!("{prog_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `prog_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:220:17 [INFO] [stdout] | [INFO] [stdout] 220 | cmd.arg(format!("{suite_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `suite_hash.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: this boolean expression can be simplified [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:312:107 [INFO] [stdout] | [INFO] [stdout] 312 | ... assert!(!std::fs::read_dir(&p).unwrap().next().is_none(), ".morph/runs should not be empty"); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::read_dir(&p).unwrap().next().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 boolean expression can be simplified [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:313:113 [INFO] [stdout] | [INFO] [stdout] 313 | ... assert!(!std::fs::read_dir(&p).unwrap().next().is_none(), ".morph/prompts should not be empty"); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::read_dir(&p).unwrap().next().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] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 296 | cmd.arg(format!("{prog_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `prog_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:298:17 [INFO] [stdout] | [INFO] [stdout] 298 | cmd.arg(format!("{suite_hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `suite_hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:453:17 [INFO] [stdout] | [INFO] [stdout] 453 | cmd.arg(format!("{hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `hash.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: useless use of `format!` [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:487:17 [INFO] [stdout] | [INFO] [stdout] 487 | cmd.arg(format!("{hash}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `hash.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: this boolean expression can be simplified [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:526:113 [INFO] [stdout] | [INFO] [stdout] 526 | ... assert!(!std::fs::read_dir(&p).unwrap().next().is_none(), ".morph/prompts should not be empty"); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::read_dir(&p).unwrap().next().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] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:527:107 [INFO] [stdout] | [INFO] [stdout] 527 | ... assert!(!std::fs::read_dir(&p).unwrap().next().is_none(), ".morph/runs should not be empty"); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::read_dir(&p).unwrap().next().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] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> /opt/rustwide/target/debug/build/morph-cli-8411178c693735f0/out/spec_tests.rs:528:111 [INFO] [stdout] | [INFO] [stdout] 528 | ... assert!(!std::fs::read_dir(&p).unwrap().next().is_none(), ".morph/traces should not be empty"); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::read_dir(&p).unwrap().next().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] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-cli/src/setup.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / entry [INFO] [stdout] 130 | | .get("command") [INFO] [stdout] 131 | | .and_then(|c| c.as_str()) [INFO] [stdout] 132 | | .map_or(true, |c| !old_commands.contains(&c)) [INFO] [stdout] | |_________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 132 - .map_or(true, |c| !old_commands.contains(&c)) [INFO] [stdout] 132 + .is_none_or(|c| !old_commands.contains(&c)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-cli/src/setup.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | / entry [INFO] [stdout] 138 | | .get("command") [INFO] [stdout] 139 | | .and_then(|c| c.as_str()) [INFO] [stdout] 140 | | .map_or(false, |c| c == *command) [INFO] [stdout] | |_________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use a standard comparison instead [INFO] [stdout] | [INFO] [stdout] 137 ~ entry [INFO] [stdout] 138 + .get("command") [INFO] [stdout] 139 + .and_then(|c| c.as_str()) == Some(*command) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-cli/src/setup.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / entry [INFO] [stdout] 130 | | .get("command") [INFO] [stdout] 131 | | .and_then(|c| c.as_str()) [INFO] [stdout] 132 | | .map_or(true, |c| !old_commands.contains(&c)) [INFO] [stdout] | |_________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 132 - .map_or(true, |c| !old_commands.contains(&c)) [INFO] [stdout] 132 + .is_none_or(|c| !old_commands.contains(&c)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-cli/src/setup.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | / entry [INFO] [stdout] 138 | | .get("command") [INFO] [stdout] 139 | | .and_then(|c| c.as_str()) [INFO] [stdout] 140 | | .map_or(false, |c| c == *command) [INFO] [stdout] | |_________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use a standard comparison instead [INFO] [stdout] | [INFO] [stdout] 137 ~ entry [INFO] [stdout] 138 + .get("command") [INFO] [stdout] 139 + .and_then(|c| c.as_str()) == Some(*command) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> morph-cli/src/main.rs:429:47 [INFO] [stdout] | [INFO] [stdout] 429 | ... let prompt_text = t [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 430 | | ... .events [INFO] [stdout] 431 | | ... .iter() [INFO] [stdout] 432 | | ... .filter(|e| e.kind == "prompt") [INFO] [stdout] 433 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 433 - .last() [INFO] [stdout] 433 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> morph-cli/src/main.rs:447:55 [INFO] [stdout] | [INFO] [stdout] 447 | ... let prompt_text = t [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 448 | | ... .events [INFO] [stdout] 449 | | ... .iter() [INFO] [stdout] 450 | | ... .filter(|e| e.kind == "prompt") [INFO] [stdout] 451 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 451 - .last() [INFO] [stdout] 451 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> morph-cli/src/main.rs:559:22 [INFO] [stdout] | [INFO] [stdout] 559 | .map(|s| serde_json::from_str(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `serde_json::from_str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> morph-cli/src/main.rs:429:47 [INFO] [stdout] | [INFO] [stdout] 429 | ... let prompt_text = t [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 430 | | ... .events [INFO] [stdout] 431 | | ... .iter() [INFO] [stdout] 432 | | ... .filter(|e| e.kind == "prompt") [INFO] [stdout] 433 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 433 - .last() [INFO] [stdout] 433 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> morph-cli/src/main.rs:447:55 [INFO] [stdout] | [INFO] [stdout] 447 | ... let prompt_text = t [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 448 | | ... .events [INFO] [stdout] 449 | | ... .iter() [INFO] [stdout] 450 | | ... .filter(|e| e.kind == "prompt") [INFO] [stdout] 451 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 451 - .last() [INFO] [stdout] 451 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> morph-cli/src/main.rs:559:22 [INFO] [stdout] | [INFO] [stdout] 559 | .map(|s| serde_json::from_str(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `serde_json::from_str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> morph-core/src/working.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(obj)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 161 - if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] 161 + if let Ok(obj) = object_from_file(path, kind) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> morph-core/src/working.rs:194:13 [INFO] [stdout] | [INFO] [stdout] 194 | if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] help: consider matching on `Ok(obj)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 194 - if let Some(obj) = object_from_file(path, kind).ok() { [INFO] [stdout] 194 + if let Ok(obj) = object_from_file(path, kind) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> morph-core/src/working.rs:312:1 [INFO] [stdout] | [INFO] [stdout] 312 | / fn add_directory( [INFO] [stdout] 313 | | dir: &Path, [INFO] [stdout] 314 | | morph_dir: &Path, [INFO] [stdout] 315 | | morph_prompts: &Path, [INFO] [stdout] ... | [INFO] [stdout] 322 | | skip_morph: bool, [INFO] [stdout] 323 | | ) -> Result<(), MorphError> { [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> morph-core/src/working.rs:610:17 [INFO] [stdout] | [INFO] [stdout] 610 | assert!(hashes.len() >= 1 && hashes.len() <= 2, "staged.txt (and optionally .morphignore), got {}", hashes.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!hashes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> morph-core/src/commit.rs:84:1 [INFO] [stdout] | [INFO] [stdout] 84 | / pub fn create_tree_commit( [INFO] [stdout] 85 | | store: &dyn Store, [INFO] [stdout] 86 | | repo_root: &Path, [INFO] [stdout] 87 | | pipeline_hash: Option<&Hash>, [INFO] [stdout] ... | [INFO] [stdout] 92 | | morph_version: Option<&str>, [INFO] [stdout] 93 | | ) -> Result { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> morph-core/src/commit.rs:223:1 [INFO] [stdout] | [INFO] [stdout] 223 | / pub fn create_merge_commit_full( [INFO] [stdout] 224 | | store: &dyn Store, [INFO] [stdout] 225 | | other_branch: &str, [INFO] [stdout] 226 | | merged_pipeline_hash: &Hash, [INFO] [stdout] ... | [INFO] [stdout] 232 | | morph_version: Option<&str>, [INFO] [stdout] 233 | | ) -> Result { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> morph-core/src/commit.rs:238:1 [INFO] [stdout] | [INFO] [stdout] 238 | / pub fn create_merge_commit_with_retirement( [INFO] [stdout] 239 | | store: &dyn Store, [INFO] [stdout] 240 | | other_branch: &str, [INFO] [stdout] 241 | | merged_pipeline_hash: &Hash, [INFO] [stdout] ... | [INFO] [stdout] 248 | | retired_metrics: Option<&[String]>, [INFO] [stdout] 249 | | ) -> Result { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-core/src/metrics.rs:78:32 [INFO] [stdout] | [INFO] [stdout] 78 | parent.iter().all(|(k, v)| merged.get(k).map_or(false, |m| *m >= *v)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 78 - parent.iter().all(|(k, v)| merged.get(k).map_or(false, |m| *m >= *v)) [INFO] [stdout] 78 + parent.iter().all(|(k, v)| merged.get(k).is_some_and(|m| *m >= *v)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> morph-core/src/metrics.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / merged.get(k).map_or(false, |m| { [INFO] [stdout] 96 | | let dir = directions.get(k.as_str()).copied().unwrap_or("maximize"); [INFO] [stdout] 97 | | if dir == "minimize" { [INFO] [stdout] 98 | | *m <= *v [INFO] [stdout] ... | [INFO] [stdout] 102 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 95 - merged.get(k).map_or(false, |m| { [INFO] [stdout] 95 + merged.get(k).is_some_and(|m| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> morph-core/src/metrics.rs:210:17 [INFO] [stdout] | [INFO] [stdout] 210 | assert!(p95 >= 94.0 && p95 <= 96.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(94.0..=96.0).contains(&p95)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_path_buf` [INFO] [stdout] --> morph-core/src/record.rs:144:34 [INFO] [stdout] | [INFO] [stdout] 144 | let store = FsStore::new(dir.path().to_path_buf()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `dir.path()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> morph-core/src/migrate.rs:52:32 [INFO] [stdout] | [INFO] [stdout] 52 | if object_type_ord(&obj) != type_ord { [INFO] [stdout] | ^^^^ help: change this to: `obj` [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: this `if` statement can be collapsed [INFO] [stdout] --> morph-core/src/migrate.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | / if content.len() == 64 { [INFO] [stdout] 70 | | if Hash::from_hex(&content).is_ok() { [INFO] [stdout] 71 | | if let Some(&new_h) = map.get(&content) { [INFO] [stdout] 72 | | gix.ref_write(&format!("heads/{}", name), &new_h)?; [INFO] [stdout] ... | [INFO] [stdout] 75 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 69 ~ if content.len() == 64 [INFO] [stdout] 70 ~ && Hash::from_hex(&content).is_ok() { [INFO] [stdout] 71 | if let Some(&new_h) = map.get(&content) { [INFO] [stdout] 72 | gix.ref_write(&format!("heads/{}", name), &new_h)?; [INFO] [stdout] 73 | } [INFO] [stdout] 74 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking morph-mcp v0.1.0 (/opt/rustwide/workdir/morph-mcp) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.41s [INFO] running `Command { std: "docker" "inspect" "bb186c0c40370d6a290af8eb64858bb6cd20663e1d5ace5f3661ef77f655d438", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bb186c0c40370d6a290af8eb64858bb6cd20663e1d5ace5f3661ef77f655d438", kill_on_drop: false }` [INFO] [stdout] bb186c0c40370d6a290af8eb64858bb6cd20663e1d5ace5f3661ef77f655d438