[INFO] fetching crate permitheus 0.2.0... [INFO] linting permitheus-0.2.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate permitheus 0.2.0 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate permitheus 0.2.0 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate permitheus 0.2.0 [INFO] tweaked toml for crates.io crate permitheus 0.2.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate permitheus 0.2.0 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 permitheus 0.2.0 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 2ffbad8caba6ffeebd4bfc85b53d5b919ecf801a5370b6a0c48e67bbbaba429d [INFO] running `Command { std: "docker" "start" "-a" "2ffbad8caba6ffeebd4bfc85b53d5b919ecf801a5370b6a0c48e67bbbaba429d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2ffbad8caba6ffeebd4bfc85b53d5b919ecf801a5370b6a0c48e67bbbaba429d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2ffbad8caba6ffeebd4bfc85b53d5b919ecf801a5370b6a0c48e67bbbaba429d", kill_on_drop: false }` [INFO] [stdout] 2ffbad8caba6ffeebd4bfc85b53d5b919ecf801a5370b6a0c48e67bbbaba429d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 2b1338e361ee90e8d21987f9b683e2901a31c92b48a3af91b1d5b959162c269c [INFO] running `Command { std: "docker" "start" "-a" "2b1338e361ee90e8d21987f9b683e2901a31c92b48a3af91b1d5b959162c269c", kill_on_drop: false }` [INFO] [stderr] Checking clap_builder v4.5.51 [INFO] [stderr] Checking hashbrown v0.16.0 [INFO] [stderr] Compiling syn v2.0.109 [INFO] [stderr] Checking lru v0.16.2 [INFO] [stderr] Checking permitheus v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/find.rs:12:133 [INFO] [stdout] | [INFO] [stdout] 12 | ...: &Permission) -> (Option>,Option,Vec>>>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` 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/find.rs:40:32 [INFO] [stdout] | [INFO] [stdout] 40 | if not_expired(&user_entry.expiration()) && !user_entry.incompatible_with_request(request) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `user_entry.expiration()` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/find.rs:55:32 [INFO] [stdout] | [INFO] [stdout] 55 | if not_expired(&public_entry.expiration()) && !public_entry.incompatible_with_request(request) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `public_entry.expiration()` [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/find.rs:73:32 [INFO] [stdout] | [INFO] [stdout] 73 | if not_expired(&user_entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `user_entry.expiration()` [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/find.rs:94:32 [INFO] [stdout] | [INFO] [stdout] 94 | if not_expired(&public_entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `public_entry.expiration()` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/find.rs:113:147 [INFO] [stdout] | [INFO] [stdout] 113 | ...>>, result: &mut (Option>, Option, Vec>>>)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/find.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | found.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 115 - found.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] 115 + found.sort_by_key(|b| std::cmp::Reverse(b.path.segments().len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/group.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | / match self.groups_by_user [INFO] [stdout] 15 | | .get(user_id) [INFO] [stdout] 16 | | .and_then(|f|f.get(specific_group)){ [INFO] [stdout] 17 | | None => return None, [INFO] [stdout] 18 | | Some(_) => (), [INFO] [stdout] 19 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 14 ~ if self.groups_by_user [INFO] [stdout] 15 + .get(user_id) [INFO] [stdout] 16 + .and_then(|f|f.get(specific_group)) == None { return None } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/group.rs:44:39 [INFO] [stdout] | [INFO] [stdout] 44 | if request.has_permission(&entry.permissions()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.permissions()` [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/group.rs:60:32 [INFO] [stdout] | [INFO] [stdout] 60 | if not_expired(&entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.expiration()` [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/group.rs:73:36 [INFO] [stdout] | [INFO] [stdout] 73 | if not_expired(&entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.expiration()` [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 `or_insert_with` to construct default value [INFO] [stdout] --> src/group.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | .or_insert_with(FxHashSet::default) [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: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/group.rs:116:26 [INFO] [stdout] | [INFO] [stdout] 116 | found.extend(entries.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 116 - found.extend(entries.into_iter()); [INFO] [stdout] 116 + found.extend(entries); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/group.rs:140:24 [INFO] [stdout] | [INFO] [stdout] 140 | if !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry.permission.mode != PermissionMode::Deny || request.has_permission(&entry.permissions())` [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 `if` statement can be collapsed [INFO] [stdout] --> src/group.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | / if not_expired(&entry.expiration()) { [INFO] [stdout] 140 | | if !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] 141 | | return Some(entry); [INFO] [stdout] 142 | | } [INFO] [stdout] 143 | | } [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] 139 ~ if not_expired(&entry.expiration()) [INFO] [stdout] 140 ~ && !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] 141 | return Some(entry); [INFO] [stdout] 142 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/group.rs:139:32 [INFO] [stdout] | [INFO] [stdout] 139 | if not_expired(&entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.expiration()` [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/group.rs:140:99 [INFO] [stdout] | [INFO] [stdout] 140 | if !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.permissions()` [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/group.rs:197:62 [INFO] [stdout] | [INFO] [stdout] 197 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Read){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `group_permissions` [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/group.rs:197:82 [INFO] [stdout] | [INFO] [stdout] 197 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Read){ [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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/group.rs:200:62 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Write){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `group_permissions` [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/group.rs:200:82 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Write){ [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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/group.rs:203:62 [INFO] [stdout] | [INFO] [stdout] 203 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Execute){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `group_permissions` [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/group.rs:203:82 [INFO] [stdout] | [INFO] [stdout] 203 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Execute){ [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/resource.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | self.public_permissions.remove(&key).map(|f|removed.push(f)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 22 - self.public_permissions.remove(&key).map(|f|removed.push(f)); [INFO] [stdout] 22 + if let Some(f) = self.public_permissions.remove(&key) { removed.push(f) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/resource.rs:38:79 [INFO] [stdout] | [INFO] [stdout] 38 | ...rcePath, dst: &ResourcePath)-> Result>, Vec>>>{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/resource.rs:93:17 [INFO] [stdout] | [INFO] [stdout] 93 | return Err(e); [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] 93 - return Err(e); [INFO] [stdout] 93 + Err(e) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/resource.rs:68:58 [INFO] [stdout] | [INFO] [stdout] 68 | test_user.entry(new_path).or_insert_with(|| FxHashMap::default()).insert(user,entry); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `FxHashMap::default` [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: redundant closure [INFO] [stdout] --> src/resource.rs:79:59 [INFO] [stdout] | [INFO] [stdout] 79 | test_group.entry(new_path).or_insert_with(|| FxHashMap::default()).insert(group,entry); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `FxHashMap::default` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/lib.rs:496:27 [INFO] [stdout] | [INFO] [stdout] 496 | pub fn dump(&self) -> (Vec>, Vec>, ConflictResolution) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:499:34 [INFO] [stdout] | [INFO] [stdout] 499 | for (_path, user_map) in &self.user_permissions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 499 - for (_path, user_map) in &self.user_permissions { [INFO] [stdout] 499 + for user_map in self.user_permissions.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:500:35 [INFO] [stdout] | [INFO] [stdout] 500 | for (_user, entry) in user_map { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 500 - for (_user, entry) in user_map { [INFO] [stdout] 500 + for entry in user_map.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:506:35 [INFO] [stdout] | [INFO] [stdout] 506 | for (_path, group_map) in &self.group_permissions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 506 - for (_path, group_map) in &self.group_permissions { [INFO] [stdout] 506 + for group_map in self.group_permissions.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:507:36 [INFO] [stdout] | [INFO] [stdout] 507 | for (_group, entry) in group_map { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 507 - for (_group, entry) in group_map { [INFO] [stdout] 507 + for entry in group_map.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:513:31 [INFO] [stdout] | [INFO] [stdout] 513 | for (_path, entry) in &self.public_permissions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 513 - for (_path, entry) in &self.public_permissions { [INFO] [stdout] 513 + for entry in self.public_permissions.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lib.rs:686:96 [INFO] [stdout] | [INFO] [stdout] 686 | if entry.permission.mode == PermissionMode::Deny && request.has_permission(&entry.permissions()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.permissions()` [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/lib.rs:723:59 [INFO] [stdout] | [INFO] [stdout] 723 | if let Some(groups) = self.groups_by_user.get(&grantor) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `grantor` [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 `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:768:22 [INFO] [stdout] | [INFO] [stdout] 768 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:774:22 [INFO] [stdout] | [INFO] [stdout] 774 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/lib.rs:820:73 [INFO] [stdout] | [INFO] [stdout] 820 | let mut user_chain = self.get_all_perm_user(&resource, revoker).unwrap_or(Vec::new()); [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/lib.rs:820:53 [INFO] [stdout] | [INFO] [stdout] 820 | let mut user_chain = self.get_all_perm_user(&resource, revoker).unwrap_or(Vec::new()); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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/lib.rs:821:55 [INFO] [stdout] | [INFO] [stdout] 821 | let mut group_chain = self.get_all_perm_group(&resource, revoker); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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: consider using `sort_by_key` [INFO] [stdout] --> src/lib.rs:822:9 [INFO] [stdout] | [INFO] [stdout] 822 | user_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 822 - user_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] 822 + user_chain.sort_by_key(|b| std::cmp::Reverse(b.path.segments().len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/lib.rs:823:9 [INFO] [stdout] | [INFO] [stdout] 823 | group_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 823 - group_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] 823 + group_chain.sort_by_key(|b| std::cmp::Reverse(b.path.segments().len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:864:18 [INFO] [stdout] | [INFO] [stdout] 864 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:869:18 [INFO] [stdout] | [INFO] [stdout] 869 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stderr] Checking clap v4.5.51 [INFO] [stderr] Compiling zerocopy-derive v0.8.27 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking zerocopy v0.8.27 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking criterion v0.7.0 [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> examples/profile_hotpath.rs:7:35 [INFO] [stdout] | [INFO] [stdout] 7 | fn create_realistic_scenario() -> ( [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 8 | | Vec>, [INFO] [stdout] 9 | | Vec>, [INFO] [stdout] 10 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> examples/profile_manual.rs:8:25 [INFO] [stdout] | [INFO] [stdout] 8 | fn create_scenario() -> ( [INFO] [stdout] | _________________________^ [INFO] [stdout] 9 | | Vec>, [INFO] [stdout] 10 | | Vec>, [INFO] [stdout] 11 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/find.rs:12:133 [INFO] [stdout] | [INFO] [stdout] 12 | ...: &Permission) -> (Option>,Option,Vec>>>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` 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/find.rs:40:32 [INFO] [stdout] | [INFO] [stdout] 40 | if not_expired(&user_entry.expiration()) && !user_entry.incompatible_with_request(request) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `user_entry.expiration()` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/find.rs:55:32 [INFO] [stdout] | [INFO] [stdout] 55 | if not_expired(&public_entry.expiration()) && !public_entry.incompatible_with_request(request) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `public_entry.expiration()` [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/find.rs:73:32 [INFO] [stdout] | [INFO] [stdout] 73 | if not_expired(&user_entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `user_entry.expiration()` [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/find.rs:94:32 [INFO] [stdout] | [INFO] [stdout] 94 | if not_expired(&public_entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `public_entry.expiration()` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/find.rs:113:147 [INFO] [stdout] | [INFO] [stdout] 113 | ...>>, result: &mut (Option>, Option, Vec>>>)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/find.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | found.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 115 - found.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] 115 + found.sort_by_key(|b| std::cmp::Reverse(b.path.segments().len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/group.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | / match self.groups_by_user [INFO] [stdout] 15 | | .get(user_id) [INFO] [stdout] 16 | | .and_then(|f|f.get(specific_group)){ [INFO] [stdout] 17 | | None => return None, [INFO] [stdout] 18 | | Some(_) => (), [INFO] [stdout] 19 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 14 ~ if self.groups_by_user [INFO] [stdout] 15 + .get(user_id) [INFO] [stdout] 16 + .and_then(|f|f.get(specific_group)) == None { return None } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/group.rs:44:39 [INFO] [stdout] | [INFO] [stdout] 44 | if request.has_permission(&entry.permissions()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.permissions()` [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/group.rs:60:32 [INFO] [stdout] | [INFO] [stdout] 60 | if not_expired(&entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.expiration()` [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/group.rs:73:36 [INFO] [stdout] | [INFO] [stdout] 73 | if not_expired(&entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.expiration()` [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 `or_insert_with` to construct default value [INFO] [stdout] --> src/group.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | .or_insert_with(FxHashSet::default) [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: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/group.rs:116:26 [INFO] [stdout] | [INFO] [stdout] 116 | found.extend(entries.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 116 - found.extend(entries.into_iter()); [INFO] [stdout] 116 + found.extend(entries); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/group.rs:140:24 [INFO] [stdout] | [INFO] [stdout] 140 | if !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry.permission.mode != PermissionMode::Deny || request.has_permission(&entry.permissions())` [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 `if` statement can be collapsed [INFO] [stdout] --> src/group.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | / if not_expired(&entry.expiration()) { [INFO] [stdout] 140 | | if !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] 141 | | return Some(entry); [INFO] [stdout] 142 | | } [INFO] [stdout] 143 | | } [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] 139 ~ if not_expired(&entry.expiration()) [INFO] [stdout] 140 ~ && !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] 141 | return Some(entry); [INFO] [stdout] 142 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/group.rs:139:32 [INFO] [stdout] | [INFO] [stdout] 139 | if not_expired(&entry.expiration()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.expiration()` [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/group.rs:140:99 [INFO] [stdout] | [INFO] [stdout] 140 | if !(entry.permission.mode == PermissionMode::Deny && !request.has_permission(&entry.permissions())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.permissions()` [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/group.rs:197:62 [INFO] [stdout] | [INFO] [stdout] 197 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Read){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `group_permissions` [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/group.rs:197:82 [INFO] [stdout] | [INFO] [stdout] 197 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Read){ [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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/group.rs:200:62 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Write){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `group_permissions` [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/group.rs:200:82 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Write){ [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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/group.rs:203:62 [INFO] [stdout] | [INFO] [stdout] 203 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Execute){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `group_permissions` [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/group.rs:203:82 [INFO] [stdout] | [INFO] [stdout] 203 | if let Some(perm) = find_perm_user_and_group(&group_permissions, &resource, group, &Permission::Execute){ [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/resource.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | self.public_permissions.remove(&key).map(|f|removed.push(f)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 22 - self.public_permissions.remove(&key).map(|f|removed.push(f)); [INFO] [stdout] 22 + if let Some(f) = self.public_permissions.remove(&key) { removed.push(f) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/resource.rs:38:79 [INFO] [stdout] | [INFO] [stdout] 38 | ...rcePath, dst: &ResourcePath)-> Result>, Vec>>>{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/resource.rs:93:17 [INFO] [stdout] | [INFO] [stdout] 93 | return Err(e); [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] 93 - return Err(e); [INFO] [stdout] 93 + Err(e) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/resource.rs:68:58 [INFO] [stdout] | [INFO] [stdout] 68 | test_user.entry(new_path).or_insert_with(|| FxHashMap::default()).insert(user,entry); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `FxHashMap::default` [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: redundant closure [INFO] [stdout] --> src/resource.rs:79:59 [INFO] [stdout] | [INFO] [stdout] 79 | test_group.entry(new_path).or_insert_with(|| FxHashMap::default()).insert(group,entry); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `FxHashMap::default` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> benches/permission_checks.rs:8:37 [INFO] [stdout] | [INFO] [stdout] 8 | fn create_large_permission_set() -> ( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 9 | | Vec>, [INFO] [stdout] 10 | | Vec>, [INFO] [stdout] 11 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> tests/integration_tests.rs:4:20 [INFO] [stdout] | [INFO] [stdout] 4 | fn clean_data() -> (Vec>,Vec>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/lib.rs:496:27 [INFO] [stdout] | [INFO] [stdout] 496 | pub fn dump(&self) -> (Vec>, Vec>, ConflictResolution) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:499:34 [INFO] [stdout] | [INFO] [stdout] 499 | for (_path, user_map) in &self.user_permissions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 499 - for (_path, user_map) in &self.user_permissions { [INFO] [stdout] 499 + for user_map in self.user_permissions.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:500:35 [INFO] [stdout] | [INFO] [stdout] 500 | for (_user, entry) in user_map { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 500 - for (_user, entry) in user_map { [INFO] [stdout] 500 + for entry in user_map.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:506:35 [INFO] [stdout] | [INFO] [stdout] 506 | for (_path, group_map) in &self.group_permissions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 506 - for (_path, group_map) in &self.group_permissions { [INFO] [stdout] 506 + for group_map in self.group_permissions.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:507:36 [INFO] [stdout] | [INFO] [stdout] 507 | for (_group, entry) in group_map { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 507 - for (_group, entry) in group_map { [INFO] [stdout] 507 + for entry in group_map.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/lib.rs:513:31 [INFO] [stdout] | [INFO] [stdout] 513 | for (_path, entry) in &self.public_permissions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 513 - for (_path, entry) in &self.public_permissions { [INFO] [stdout] 513 + for entry in self.public_permissions.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lib.rs:686:96 [INFO] [stdout] | [INFO] [stdout] 686 | if entry.permission.mode == PermissionMode::Deny && request.has_permission(&entry.permissions()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.permissions()` [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/lib.rs:723:59 [INFO] [stdout] | [INFO] [stdout] 723 | if let Some(groups) = self.groups_by_user.get(&grantor) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `grantor` [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 `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:768:22 [INFO] [stdout] | [INFO] [stdout] 768 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:774:22 [INFO] [stdout] | [INFO] [stdout] 774 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/lib.rs:820:73 [INFO] [stdout] | [INFO] [stdout] 820 | let mut user_chain = self.get_all_perm_user(&resource, revoker).unwrap_or(Vec::new()); [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/lib.rs:820:53 [INFO] [stdout] | [INFO] [stdout] 820 | let mut user_chain = self.get_all_perm_user(&resource, revoker).unwrap_or(Vec::new()); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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/lib.rs:821:55 [INFO] [stdout] | [INFO] [stdout] 821 | let mut group_chain = self.get_all_perm_group(&resource, revoker); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `resource` [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: consider using `sort_by_key` [INFO] [stdout] --> src/lib.rs:822:9 [INFO] [stdout] | [INFO] [stdout] 822 | user_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 822 - user_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] 822 + user_chain.sort_by_key(|b| std::cmp::Reverse(b.path.segments().len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/lib.rs:823:9 [INFO] [stdout] | [INFO] [stdout] 823 | group_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 823 - group_chain.sort_by(|a,b| b.path.segments().len().cmp(&a.path.segments().len())); [INFO] [stdout] 823 + group_chain.sort_by_key(|b| std::cmp::Reverse(b.path.segments().len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:864:18 [INFO] [stdout] | [INFO] [stdout] 864 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/lib.rs:869:18 [INFO] [stdout] | [INFO] [stdout] 869 | .or_insert_with(FxHashMap::default) [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/integration_tests.rs:337:39 [INFO] [stdout] | [INFO] [stdout] 337 | assert!(pm.remove_user_from_group(&"b",&"Financials")); [INFO] [stdout] | ^^^^ help: change this to: `"b"` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/integration_tests.rs:337:44 [INFO] [stdout] | [INFO] [stdout] 337 | assert!(pm.remove_user_from_group(&"b",&"Financials")); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `"Financials"` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> tests/integration_tests.rs:346:34 [INFO] [stdout] | [INFO] [stdout] 346 | ..._groups() -> (Vec>, Vec>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.54s [INFO] running `Command { std: "docker" "inspect" "2b1338e361ee90e8d21987f9b683e2901a31c92b48a3af91b1d5b959162c269c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2b1338e361ee90e8d21987f9b683e2901a31c92b48a3af91b1d5b959162c269c", kill_on_drop: false }` [INFO] [stdout] 2b1338e361ee90e8d21987f9b683e2901a31c92b48a3af91b1d5b959162c269c