[INFO] fetching crate ohrs 1.3.1... [INFO] linting ohrs-1.3.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate ohrs 1.3.1 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate ohrs 1.3.1 [INFO] finished tweaking crates.io crate ohrs 1.3.1 [INFO] tweaked toml for crates.io crate ohrs 1.3.1 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate ohrs 1.3.1 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 crates.io crate ohrs 1.3.1 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 redox_syscall v0.6.0 [INFO] [stderr] Downloaded libredox v0.1.11 [INFO] [stderr] Downloaded zmij v0.1.9 [INFO] [stderr] Downloaded serde_json v1.0.147 [INFO] [stderr] Downloaded bpaf v0.9.20 [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] 52330b94bd9629fdfdd9dda95dd0ee0af3d7558b6008b123092b713e018ed080 [INFO] running `Command { std: "docker" "start" "-a" "52330b94bd9629fdfdd9dda95dd0ee0af3d7558b6008b123092b713e018ed080", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "52330b94bd9629fdfdd9dda95dd0ee0af3d7558b6008b123092b713e018ed080", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "52330b94bd9629fdfdd9dda95dd0ee0af3d7558b6008b123092b713e018ed080", kill_on_drop: false }` [INFO] [stdout] 52330b94bd9629fdfdd9dda95dd0ee0af3d7558b6008b123092b713e018ed080 [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] 514c98edeae57f1c326aa77c3cba22f5f8393b7cb4ab0184f9c16299342899f0 [INFO] running `Command { std: "docker" "start" "-a" "514c98edeae57f1c326aa77c3cba22f5f8393b7cb4ab0184f9c16299342899f0", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling serde_json v1.0.147 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Compiling camino v1.2.2 [INFO] [stderr] Checking zmij v0.1.9 [INFO] [stderr] Checking itoa v1.0.16 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Checking filetime v0.2.26 [INFO] [stderr] Checking version-compare v0.2.1 [INFO] [stderr] Checking flate2 v1.1.5 [INFO] [stderr] Checking bpaf v0.9.20 [INFO] [stderr] Checking whoami v1.6.1 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking xattr v1.6.1 [INFO] [stderr] Checking tar v0.4.44 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking semver v1.0.27 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking cargo-platform v0.1.9 [INFO] [stderr] Checking cargo_metadata v0.18.1 [INFO] [stderr] Checking ohrs v1.3.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:125:9 [INFO] [stdout] | [INFO] [stdout] 125 | (&pwd).join("package").join(&pkg.name) [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:152:13 [INFO] [stdout] | [INFO] [stdout] 152 | (&pwd).join(&args.dist).join(&pkg.name) [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:155:11 [INFO] [stdout] | [INFO] [stdout] 155 | (&pwd).join(&args.dist).join(&pkg.name) [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:179:38 [INFO] [stdout] | [INFO] [stdout] 179 | check_and_clean_file_or_dir!((&package_source).join("libs")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:185:43 [INFO] [stdout] | [INFO] [stdout] 185 | fs_extra::dir::copy(&dist_source, (&package_source).join("libs"), &op)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:199:26 [INFO] [stdout] | [INFO] [stdout] 199 | let package_source = (&pwd).join("package"); [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:214:25 [INFO] [stdout] | [INFO] [stdout] 214 | let dist_source = (&pwd).join(&args.dist); [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:237:36 [INFO] [stdout] | [INFO] [stdout] 237 | check_and_clean_file_or_dir!((&package_source).join("libs")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:243:27 [INFO] [stdout] | [INFO] [stdout] 243 | fs_extra::dir::copy((&pwd).join(&args.dist), (&package_source).join("libs"), &op)?; [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:243:52 [INFO] [stdout] | [INFO] [stdout] 243 | fs_extra::dir::copy((&pwd).join(&args.dist), (&package_source).join("libs"), &op)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 `.filter_map(..)` can be written more simply using `.map(..)` [INFO] [stdout] --> src/build/artifact.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 17 | .filter_map(|i| { [INFO] [stdout] | ________^ [INFO] [stdout] 18 | | let library_name = i.as_str(); [INFO] [stdout] 19 | | if library_name.starts_with("dylib=") { [INFO] [stdout] 20 | | return Some(format!("lib{}.so", &library_name[6..])); [INFO] [stdout] 21 | | } [INFO] [stdout] 22 | | return Some(format!("lib{}.so", library_name)); [INFO] [stdout] 23 | | }) [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/artifact.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | return Some(format!("lib{}.so", library_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 22 - return Some(format!("lib{}.so", library_name)); [INFO] [stdout] 22 + Some(format!("lib{}.so", library_name)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/build/artifact.rs:20:43 [INFO] [stdout] | [INFO] [stdout] 20 | return Some(format!("lib{}.so", &library_name[6..])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/build/artifact.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | if library_name.starts_with("dylib=") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 19 ~ if let Some() = library_name.strip_prefix("dylib=") { [INFO] [stdout] 20 ~ return Some(format!("lib{}.so", )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/build/artifact.rs:37:27 [INFO] [stdout] | [INFO] [stdout] 37 | PathBuf::from(&item_path[7..]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/build/artifact.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | if item_path.starts_with("native=") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 35 ~ if let Some() = item_path.strip_prefix("native=") { [INFO] [stdout] 36 | return Some( [INFO] [stdout] 37 ~ PathBuf::from() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/build/artifact.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | .expect(&format!("Convert {} to absolute path failed.", item_path)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Convert {} to absolute path failed.", item_path))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` 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/build/artifact.rs:42:37 [INFO] [stdout] | [INFO] [stdout] 42 | if is_rust_intermediate_lib(&i) { [INFO] [stdout] | ^^ help: change this to: `i` [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: function call inside of `expect` [INFO] [stdout] --> src/build/artifact.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | .expect(&format!("Convert {} to absolute path failed.", i.as_str())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Convert {} to absolute path failed.", i.as_str()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/artifact.rs:59:40 [INFO] [stdout] | [INFO] [stdout] 59 | let item_p = libs.iter().map(|l| return i.join(l)).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 59 - let item_p = libs.iter().map(|l| return i.join(l)).collect::>(); [INFO] [stdout] 59 + let item_p = libs.iter().map(|l| i.join(l)).collect::>(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.filter_map(..)` can be written more simply using `.filter(..)` [INFO] [stdout] --> src/build/artifact.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 73 | .filter_map(|i| { [INFO] [stdout] | ________^ [INFO] [stdout] ... | [INFO] [stdout] 83 | | None [INFO] [stdout] 84 | | }) [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/prepare.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | return p.manifest_path.eq(cargo_file_str); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 98 - return p.manifest_path.eq(cargo_file_str); [INFO] [stdout] 98 + p.manifest_path.eq(cargo_file_str) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/build/prepare.rs:130:29 [INFO] [stdout] | [INFO] [stdout] 130 | let napi_ohos_version = full_metadata [INFO] [stdout] | _____________________________^ [INFO] [stdout] 131 | | .packages [INFO] [stdout] 132 | | .iter() [INFO] [stdout] 133 | | .find(|p| p.name == "napi-ohos") [INFO] [stdout] 134 | | .and_then(|v| Some(v.version.to_string())) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 130 ~ let napi_ohos_version = full_metadata [INFO] [stdout] 131 + .packages [INFO] [stdout] 132 + .iter() [INFO] [stdout] 133 + .find(|p| p.name == "napi-ohos").map(|v| v.version.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/build/prepare.rs:138:37 [INFO] [stdout] | [INFO] [stdout] 138 | let napi_backend_ohos_version = full_metadata [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 139 | | .packages [INFO] [stdout] 140 | | .iter() [INFO] [stdout] 141 | | .find(|p| p.name == "napi-derive-ohos") [INFO] [stdout] 142 | | .and_then(|v| Some(v.version.to_string())) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 138 ~ let napi_backend_ohos_version = full_metadata [INFO] [stdout] 139 + .packages [INFO] [stdout] 140 + .iter() [INFO] [stdout] 141 + .find(|p| p.name == "napi-derive-ohos").map(|v| v.version.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/build/prepare.rs:236:17 [INFO] [stdout] | [INFO] [stdout] 236 | hasher.update(&pkg.manifest_path.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `pkg.manifest_path.as_str()` [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: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/build/prepare.rs:258:21 [INFO] [stdout] | [INFO] [stdout] 258 | .as_millis() [INFO] [stdout] | _____________________^ [INFO] [stdout] 259 | | .to_string() [INFO] [stdout] | |____________________^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/build/prepare.rs:271:10 [INFO] [stdout] | [INFO] [stdout] 271 | && !fs::exists(&tmp_full_path).is_ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::exists(&tmp_full_path).is_err()` [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: useless use of `format!` [INFO] [stdout] --> src/build/run.rs:15:22 [INFO] [stdout] | [INFO] [stdout] 15 | let mut ndk_path = format!("{}", &ctx.ndk); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `(&ctx.ndk).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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:125:9 [INFO] [stdout] | [INFO] [stdout] 125 | (&pwd).join("package").join(&pkg.name) [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:152:13 [INFO] [stdout] | [INFO] [stdout] 152 | (&pwd).join(&args.dist).join(&pkg.name) [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:155:11 [INFO] [stdout] | [INFO] [stdout] 155 | (&pwd).join(&args.dist).join(&pkg.name) [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:179:38 [INFO] [stdout] | [INFO] [stdout] 179 | check_and_clean_file_or_dir!((&package_source).join("libs")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:185:43 [INFO] [stdout] | [INFO] [stdout] 185 | fs_extra::dir::copy(&dist_source, (&package_source).join("libs"), &op)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:199:26 [INFO] [stdout] | [INFO] [stdout] 199 | let package_source = (&pwd).join("package"); [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:214:25 [INFO] [stdout] | [INFO] [stdout] 214 | let dist_source = (&pwd).join(&args.dist); [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:237:36 [INFO] [stdout] | [INFO] [stdout] 237 | check_and_clean_file_or_dir!((&package_source).join("libs")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:243:27 [INFO] [stdout] | [INFO] [stdout] 243 | fs_extra::dir::copy((&pwd).join(&args.dist), (&package_source).join("libs"), &op)?; [INFO] [stdout] | ^^^^^^ help: change this to: `pwd` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/artifact/mod.rs:243:52 [INFO] [stdout] | [INFO] [stdout] 243 | fs_extra::dir::copy((&pwd).join(&args.dist), (&package_source).join("libs"), &op)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `package_source` [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: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/build/ts.rs:58:3 [INFO] [stdout] | [INFO] [stdout] 58 | / for line in lines { [INFO] [stdout] 59 | | if let Ok(json_line) = line { [INFO] [stdout] 60 | | let mut format_line = json_line.trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 81 | | } [INFO] [stdout] | |___^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/build/ts.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Ok(json_line) = line { [INFO] [stdout] 60 | | let mut format_line = json_line.trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 58 ~ for json_line in lines.flatten() { [INFO] [stdout] 59 + let mut format_line = json_line.trim().to_string(); [INFO] [stdout] 60 + [INFO] [stdout] 61 + // Check if the string starts with '{' [INFO] [stdout] 62 + if !format_line.starts_with('{') { [INFO] [stdout] 63 + // Find the position of the first ':' [INFO] [stdout] 64 + if let Some(start) = format_line.find(':') { [INFO] [stdout] 65 + // Slice the string starting from the next position after ':' [INFO] [stdout] 66 + format_line = format_line[start + 1..].to_string(); [INFO] [stdout] 67 + } [INFO] [stdout] 68 + } [INFO] [stdout] 69 + if !format_line.is_empty() { [INFO] [stdout] 70 + let mut json_value: TypeDefLine = serde_json::from_str(&format_line).unwrap(); [INFO] [stdout] 71 + if let Some(js_doc) = json_value.js_doc { [INFO] [stdout] 72 + json_value.js_doc = Some(js_doc.replace("\\n", "\n")); [INFO] [stdout] 73 + } [INFO] [stdout] 74 + if !json_value.def.is_empty() { [INFO] [stdout] 75 + json_value.def = json_value.def.replace("\\n", "\n"); [INFO] [stdout] 76 + } [INFO] [stdout] 77 + defs.push(json_value); [INFO] [stdout] 78 + } [INFO] [stdout] 79 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.filter_map(..)` can be written more simply using `.map(..)` [INFO] [stdout] --> src/build/artifact.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 17 | .filter_map(|i| { [INFO] [stdout] | ________^ [INFO] [stdout] 18 | | let library_name = i.as_str(); [INFO] [stdout] 19 | | if library_name.starts_with("dylib=") { [INFO] [stdout] 20 | | return Some(format!("lib{}.so", &library_name[6..])); [INFO] [stdout] 21 | | } [INFO] [stdout] 22 | | return Some(format!("lib{}.so", library_name)); [INFO] [stdout] 23 | | }) [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/artifact.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | return Some(format!("lib{}.so", library_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 22 - return Some(format!("lib{}.so", library_name)); [INFO] [stdout] 22 + Some(format!("lib{}.so", library_name)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/build/artifact.rs:20:43 [INFO] [stdout] | [INFO] [stdout] 20 | return Some(format!("lib{}.so", &library_name[6..])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/build/artifact.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | if library_name.starts_with("dylib=") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 19 ~ if let Some() = library_name.strip_prefix("dylib=") { [INFO] [stdout] 20 ~ return Some(format!("lib{}.so", )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/build/artifact.rs:37:27 [INFO] [stdout] | [INFO] [stdout] 37 | PathBuf::from(&item_path[7..]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/build/artifact.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | if item_path.starts_with("native=") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 35 ~ if let Some() = item_path.strip_prefix("native=") { [INFO] [stdout] 36 | return Some( [INFO] [stdout] 37 ~ PathBuf::from() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/build/artifact.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | .expect(&format!("Convert {} to absolute path failed.", item_path)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Convert {} to absolute path failed.", item_path))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` 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/build/artifact.rs:42:37 [INFO] [stdout] | [INFO] [stdout] 42 | if is_rust_intermediate_lib(&i) { [INFO] [stdout] | ^^ help: change this to: `i` [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: function call inside of `expect` [INFO] [stdout] --> src/build/artifact.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | .expect(&format!("Convert {} to absolute path failed.", i.as_str())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Convert {} to absolute path failed.", i.as_str()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/artifact.rs:59:40 [INFO] [stdout] | [INFO] [stdout] 59 | let item_p = libs.iter().map(|l| return i.join(l)).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 59 - let item_p = libs.iter().map(|l| return i.join(l)).collect::>(); [INFO] [stdout] 59 + let item_p = libs.iter().map(|l| i.join(l)).collect::>(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.filter_map(..)` can be written more simply using `.filter(..)` [INFO] [stdout] --> src/build/artifact.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 73 | .filter_map(|i| { [INFO] [stdout] | ________^ [INFO] [stdout] ... | [INFO] [stdout] 83 | | None [INFO] [stdout] 84 | | }) [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/build/ts.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | .or_insert_with(Vec::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/ts.rs:250:3 [INFO] [stdout] | [INFO] [stdout] 250 | return String::from("export declare"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 250 - return String::from("export declare"); [INFO] [stdout] 250 + String::from("export declare") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/prepare.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | return p.manifest_path.eq(cargo_file_str); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 98 - return p.manifest_path.eq(cargo_file_str); [INFO] [stdout] 98 + p.manifest_path.eq(cargo_file_str) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/build/prepare.rs:130:29 [INFO] [stdout] | [INFO] [stdout] 130 | let napi_ohos_version = full_metadata [INFO] [stdout] | _____________________________^ [INFO] [stdout] 131 | | .packages [INFO] [stdout] 132 | | .iter() [INFO] [stdout] 133 | | .find(|p| p.name == "napi-ohos") [INFO] [stdout] 134 | | .and_then(|v| Some(v.version.to_string())) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 130 ~ let napi_ohos_version = full_metadata [INFO] [stdout] 131 + .packages [INFO] [stdout] 132 + .iter() [INFO] [stdout] 133 + .find(|p| p.name == "napi-ohos").map(|v| v.version.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/build/prepare.rs:138:37 [INFO] [stdout] | [INFO] [stdout] 138 | let napi_backend_ohos_version = full_metadata [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 139 | | .packages [INFO] [stdout] 140 | | .iter() [INFO] [stdout] 141 | | .find(|p| p.name == "napi-derive-ohos") [INFO] [stdout] 142 | | .and_then(|v| Some(v.version.to_string())) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 138 ~ let napi_backend_ohos_version = full_metadata [INFO] [stdout] 139 + .packages [INFO] [stdout] 140 + .iter() [INFO] [stdout] 141 + .find(|p| p.name == "napi-derive-ohos").map(|v| v.version.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/build/prepare.rs:236:17 [INFO] [stdout] | [INFO] [stdout] 236 | hasher.update(&pkg.manifest_path.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `pkg.manifest_path.as_str()` [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: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/build/prepare.rs:258:21 [INFO] [stdout] | [INFO] [stdout] 258 | .as_millis() [INFO] [stdout] | _____________________^ [INFO] [stdout] 259 | | .to_string() [INFO] [stdout] | |____________________^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/build/prepare.rs:271:10 [INFO] [stdout] | [INFO] [stdout] 271 | && !fs::exists(&tmp_full_path).is_ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::exists(&tmp_full_path).is_err()` [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: useless use of `format!` [INFO] [stdout] --> src/build/run.rs:15:22 [INFO] [stdout] | [INFO] [stdout] 15 | let mut ndk_path = format!("{}", &ctx.ndk); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `(&ctx.ndk).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: redundant closure [INFO] [stdout] --> src/build/mod.rs:93:14 [INFO] [stdout] | [INFO] [stdout] 93 | .map(|p| std::slice::from_ref(p)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `std::slice::from_ref` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/build/mod.rs:151:19 [INFO] [stdout] | [INFO] [stdout] 151 | hasher.update(&pkg.manifest_path.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `pkg.manifest_path.as_str()` [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] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/build/mod.rs:168:23 [INFO] [stdout] | [INFO] [stdout] 168 | .as_millis() [INFO] [stdout] | _______________________^ [INFO] [stdout] 169 | | .to_string() [INFO] [stdout] | |______________________^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/cargo/run.rs:11:22 [INFO] [stdout] | [INFO] [stdout] 11 | let mut ndk_path = format!("{}", &ndk); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `(&ndk).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: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/cargo/run.rs:41:35 [INFO] [stdout] | [INFO] [stdout] 41 | let mut path = env::var("PATH").unwrap_or(String::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/cargo/mod.rs:75:6 [INFO] [stdout] | [INFO] [stdout] 75 | if args.args.len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.args.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: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/build/ts.rs:58:3 [INFO] [stdout] | [INFO] [stdout] 58 | / for line in lines { [INFO] [stdout] 59 | | if let Ok(json_line) = line { [INFO] [stdout] 60 | | let mut format_line = json_line.trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 81 | | } [INFO] [stdout] | |___^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/build/ts.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Ok(json_line) = line { [INFO] [stdout] 60 | | let mut format_line = json_line.trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 58 ~ for json_line in lines.flatten() { [INFO] [stdout] 59 + let mut format_line = json_line.trim().to_string(); [INFO] [stdout] 60 + [INFO] [stdout] 61 + // Check if the string starts with '{' [INFO] [stdout] 62 + if !format_line.starts_with('{') { [INFO] [stdout] 63 + // Find the position of the first ':' [INFO] [stdout] 64 + if let Some(start) = format_line.find(':') { [INFO] [stdout] 65 + // Slice the string starting from the next position after ':' [INFO] [stdout] 66 + format_line = format_line[start + 1..].to_string(); [INFO] [stdout] 67 + } [INFO] [stdout] 68 + } [INFO] [stdout] 69 + if !format_line.is_empty() { [INFO] [stdout] 70 + let mut json_value: TypeDefLine = serde_json::from_str(&format_line).unwrap(); [INFO] [stdout] 71 + if let Some(js_doc) = json_value.js_doc { [INFO] [stdout] 72 + json_value.js_doc = Some(js_doc.replace("\\n", "\n")); [INFO] [stdout] 73 + } [INFO] [stdout] 74 + if !json_value.def.is_empty() { [INFO] [stdout] 75 + json_value.def = json_value.def.replace("\\n", "\n"); [INFO] [stdout] 76 + } [INFO] [stdout] 77 + defs.push(json_value); [INFO] [stdout] 78 + } [INFO] [stdout] 79 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/cargo/mod.rs:113:46 [INFO] [stdout] | [INFO] [stdout] 113 | let arch = Arch::from_str(r).map_err(|e| Error::msg(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Error::msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/build/ts.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | .or_insert_with(Vec::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/build/ts.rs:250:3 [INFO] [stdout] | [INFO] [stdout] 250 | return String::from("export declare"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 250 - return String::from("export declare"); [INFO] [stdout] 250 + String::from("export declare") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/doctor/target.rs:7:11 [INFO] [stdout] | [INFO] [stdout] 7 | .args(&["target", "list", "--installed"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["target", "list", "--installed"]` [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/build/mod.rs:93:14 [INFO] [stdout] | [INFO] [stdout] 93 | .map(|p| std::slice::from_ref(p)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `std::slice::from_ref` [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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/doctor/mod.rs:36:16 [INFO] [stdout] | [INFO] [stdout] 36 | render((&targets).contains(&t.to_owned())), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `targets` [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: equality checks against true are unnecessary [INFO] [stdout] --> src/init/mod.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | if target.exists() == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `target.exists()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/build/mod.rs:151:19 [INFO] [stdout] | [INFO] [stdout] 151 | hasher.update(&pkg.manifest_path.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `pkg.manifest_path.as_str()` [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] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/build/mod.rs:168:23 [INFO] [stdout] | [INFO] [stdout] 168 | .as_millis() [INFO] [stdout] | _______________________^ [INFO] [stdout] 169 | | .to_string() [INFO] [stdout] | |______________________^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/cargo/run.rs:11:22 [INFO] [stdout] | [INFO] [stdout] 11 | let mut ndk_path = format!("{}", &ndk); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `(&ndk).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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/init/mod.rs:38:44 [INFO] [stdout] | [INFO] [stdout] 38 | let config = CARGO_TOML.replace("entry", &arg.name.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `arg.name.as_str()` [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/init/mod.rs:46:41 [INFO] [stdout] | [INFO] [stdout] 46 | let readme = README.replace("@pkg", &pkg.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `pkg.as_str()` [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/init/mod.rs:54:27 [INFO] [stdout] | [INFO] [stdout] 54 | .replace("@author", &git_config.author.as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `git_config.author.as_str()` [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/init/mod.rs:55:24 [INFO] [stdout] | [INFO] [stdout] 55 | .replace("@pkg", &pkg.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `pkg.as_str()` [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: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/cargo/run.rs:41:35 [INFO] [stdout] | [INFO] [stdout] 41 | let mut path = env::var("PATH").unwrap_or(String::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/init/mod.rs:62:46 [INFO] [stdout] | [INFO] [stdout] 62 | let license = LICENSE.replace("@author", &git_config.author.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `git_config.author.as_str()` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/init/mod.rs:69:40 [INFO] [stdout] | [INFO] [stdout] 69 | let lib_name = format!("lib{}.so", (&arg.name).replace("-", "_")); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `arg.name` [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/init/mod.rs:84:49 [INFO] [stdout] | [INFO] [stdout] 84 | let module = MODULE_CONTENT.replace("@pkg", &pkg.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `pkg.as_str()` [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: length comparison to one [INFO] [stdout] --> src/cargo/mod.rs:75:6 [INFO] [stdout] | [INFO] [stdout] 75 | if args.args.len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.args.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: redundant closure [INFO] [stdout] --> src/cargo/mod.rs:113:46 [INFO] [stdout] | [INFO] [stdout] 113 | let arch = Arch::from_str(r).map_err(|e| Error::msg(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Error::msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/doctor/target.rs:7:11 [INFO] [stdout] | [INFO] [stdout] 7 | .args(&["target", "list", "--installed"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["target", "list", "--installed"]` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/doctor/mod.rs:36:16 [INFO] [stdout] | [INFO] [stdout] 36 | render((&targets).contains(&t.to_owned())), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `targets` [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: equality checks against true are unnecessary [INFO] [stdout] --> src/init/mod.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | if target.exists() == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `target.exists()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` 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/init/mod.rs:38:44 [INFO] [stdout] | [INFO] [stdout] 38 | let config = CARGO_TOML.replace("entry", &arg.name.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `arg.name.as_str()` [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/init/mod.rs:46:41 [INFO] [stdout] | [INFO] [stdout] 46 | let readme = README.replace("@pkg", &pkg.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `pkg.as_str()` [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/init/mod.rs:54:27 [INFO] [stdout] | [INFO] [stdout] 54 | .replace("@author", &git_config.author.as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `git_config.author.as_str()` [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/init/mod.rs:55:24 [INFO] [stdout] | [INFO] [stdout] 55 | .replace("@pkg", &pkg.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `pkg.as_str()` [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/init/mod.rs:62:46 [INFO] [stdout] | [INFO] [stdout] 62 | let license = LICENSE.replace("@author", &git_config.author.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `git_config.author.as_str()` [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 borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/init/mod.rs:69:40 [INFO] [stdout] | [INFO] [stdout] 69 | let lib_name = format!("lib{}.so", (&arg.name).replace("-", "_")); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `arg.name` [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/init/mod.rs:84:49 [INFO] [stdout] | [INFO] [stdout] 84 | let module = MODULE_CONTENT.replace("@pkg", &pkg.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `pkg.as_str()` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.40s [INFO] running `Command { std: "docker" "inspect" "514c98edeae57f1c326aa77c3cba22f5f8393b7cb4ab0184f9c16299342899f0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "514c98edeae57f1c326aa77c3cba22f5f8393b7cb4ab0184f9c16299342899f0", kill_on_drop: false }` [INFO] [stdout] 514c98edeae57f1c326aa77c3cba22f5f8393b7cb4ab0184f9c16299342899f0