[INFO] cloning repository https://github.com/malikwirin/prozessverwaltung [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/malikwirin/prozessverwaltung" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmalikwirin%2Fprozessverwaltung", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmalikwirin%2Fprozessverwaltung'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7669b418668703e6cf9d431628ad09ab0528ee36 [INFO] linting malikwirin/prozessverwaltung against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmalikwirin%2Fprozessverwaltung" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/malikwirin/prozessverwaltung [INFO] finished tweaking git repo https://github.com/malikwirin/prozessverwaltung [INFO] tweaked toml for git repo https://github.com/malikwirin/prozessverwaltung written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/malikwirin/prozessverwaltung on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/malikwirin/prozessverwaltung 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] warning: unused manifest key: build [INFO] [stderr] help: build is a valid .cargo/config.toml key [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 94d6673989338e535c981f67f4fcae00e72d97eb3474a46ae4c6c56ff40eb87d [INFO] running `Command { std: "docker" "start" "-a" "94d6673989338e535c981f67f4fcae00e72d97eb3474a46ae4c6c56ff40eb87d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "94d6673989338e535c981f67f4fcae00e72d97eb3474a46ae4c6c56ff40eb87d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "94d6673989338e535c981f67f4fcae00e72d97eb3474a46ae4c6c56ff40eb87d", kill_on_drop: false }` [INFO] [stdout] 94d6673989338e535c981f67f4fcae00e72d97eb3474a46ae4c6c56ff40eb87d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] a7be7db8b7618fd502053ac7639f7fee1d6f5296086aea85fd09e9d275766ad2 [INFO] running `Command { std: "docker" "start" "-a" "a7be7db8b7618fd502053ac7639f7fee1d6f5296086aea85fd09e9d275766ad2", kill_on_drop: false }` [INFO] [stderr] warning: unused manifest key: build [INFO] [stderr] help: build is a valid .cargo/config.toml key [INFO] [stderr] Compiling libc v0.2.146 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Checking iana-time-zone v0.1.57 [INFO] [stderr] Checking time v0.1.45 [INFO] [stderr] Checking chrono v0.4.26 [INFO] [stderr] Checking prozessverwaltung v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/output.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | result = result / processes.len() as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result /= processes.len() as f32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/output.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | result = result / processes.len() as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result /= processes.len() as f32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/output.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | result = result / processes.len() as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result /= processes.len() as f32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:166:28 [INFO] [stdout] | [INFO] [stdout] 166 | if !(last_process == current) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(last_process != current)` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:29:57 [INFO] [stdout] | [INFO] [stdout] 29 | let scheduling_algorithm = set_scheduling_algorithm(&scheduling_algorithm); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `scheduling_algorithm` [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: manual implementation of an assign operation [INFO] [stdout] --> src/output.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | result = result / processes.len() as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result /= processes.len() as f32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` 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/main.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / for line in reader.lines().skip(1) { [INFO] [stdout] 55 | | if let Ok(line) = line { [INFO] [stdout] 56 | | println!("CSV-Zeile: {}", line); [INFO] [stdout] 57 | | let values: Vec<&str> = line.split(',').collect(); [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/main.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | / if let Ok(line) = line { [INFO] [stdout] 56 | | println!("CSV-Zeile: {}", line); [INFO] [stdout] 57 | | let values: Vec<&str> = line.split(',').collect(); [INFO] [stdout] 58 | | println!("CSV-Werte: {:?}", values); [INFO] [stdout] ... | [INFO] [stdout] 99 | | } [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] 54 ~ for line in reader.lines().skip(1).flatten() { [INFO] [stdout] 55 + println!("CSV-Zeile: {}", line); [INFO] [stdout] 56 + let values: Vec<&str> = line.split(',').collect(); [INFO] [stdout] 57 + println!("CSV-Werte: {:?}", values); [INFO] [stdout] 58 + if values.len() == 4 { [INFO] [stdout] 59 + let name = values[0].to_string(); [INFO] [stdout] 60 + let id = values[1].parse::()?; [INFO] [stdout] 61 ~ // Überprüfen, ob die ID bereits verwendet wurde [INFO] [stdout] 62 + if used_ids.contains(&id) { [INFO] [stdout] 63 ~ println!("Prozess mit ID {} existiert bereits. Überspringen.", id); [INFO] [stdout] 64 ~ continue; // Zum nächsten Schleifendurchlauf springen [INFO] [stdout] 65 + } [INFO] [stdout] 66 + [INFO] [stdout] 67 + used_ids.insert(id); // ID als verwendet markieren [INFO] [stdout] 68 + let arrival_time = values[2].parse::()?; [INFO] [stdout] 69 + let execution_time = values[3].parse::()?; [INFO] [stdout] 70 + let start = 0; [INFO] [stdout] 71 + let end = 0; [INFO] [stdout] 72 + let waiting_time = 0; [INFO] [stdout] 73 + let process_time = 0; [INFO] [stdout] 74 + let reaction_time = 0; [INFO] [stdout] 75 + let execution_time_left = execution_time; [INFO] [stdout] 76 + let started = false; [INFO] [stdout] 77 + let completed = false; [INFO] [stdout] 78 + [INFO] [stdout] 79 + let process = process::Process { [INFO] [stdout] 80 + name, [INFO] [stdout] 81 + id, [INFO] [stdout] 82 + arrival_time, [INFO] [stdout] 83 + execution_time, [INFO] [stdout] 84 + start, [INFO] [stdout] 85 + end, [INFO] [stdout] 86 + waiting_time, [INFO] [stdout] 87 + process_time, [INFO] [stdout] 88 + reaction_time, [INFO] [stdout] 89 + execution_time_left, [INFO] [stdout] 90 + started, [INFO] [stdout] 91 + completed, [INFO] [stdout] 92 + }; [INFO] [stdout] 93 + processes.push(process); [INFO] [stdout] 94 + } else { [INFO] [stdout] 95 ~ println!("Ungültige Anzahl von CSV-Werten: {}", values.len()); [INFO] [stdout] 96 ~ println!("Zeile {} wird übersprungen.", line); [INFO] [stdout] 97 + } [INFO] [stdout] 98 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/output.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | result = result / processes.len() as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result /= processes.len() as f32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/output.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | result = result / processes.len() as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result /= processes.len() as f32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:166:28 [INFO] [stdout] | [INFO] [stdout] 166 | if !(last_process == current) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(last_process != current)` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:29:57 [INFO] [stdout] | [INFO] [stdout] 29 | let scheduling_algorithm = set_scheduling_algorithm(&scheduling_algorithm); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `scheduling_algorithm` [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: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/main.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / for line in reader.lines().skip(1) { [INFO] [stdout] 55 | | if let Ok(line) = line { [INFO] [stdout] 56 | | println!("CSV-Zeile: {}", line); [INFO] [stdout] 57 | | let values: Vec<&str> = line.split(',').collect(); [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/main.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | / if let Ok(line) = line { [INFO] [stdout] 56 | | println!("CSV-Zeile: {}", line); [INFO] [stdout] 57 | | let values: Vec<&str> = line.split(',').collect(); [INFO] [stdout] 58 | | println!("CSV-Werte: {:?}", values); [INFO] [stdout] ... | [INFO] [stdout] 99 | | } [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] 54 ~ for line in reader.lines().skip(1).flatten() { [INFO] [stdout] 55 + println!("CSV-Zeile: {}", line); [INFO] [stdout] 56 + let values: Vec<&str> = line.split(',').collect(); [INFO] [stdout] 57 + println!("CSV-Werte: {:?}", values); [INFO] [stdout] 58 + if values.len() == 4 { [INFO] [stdout] 59 + let name = values[0].to_string(); [INFO] [stdout] 60 + let id = values[1].parse::()?; [INFO] [stdout] 61 ~ // Überprüfen, ob die ID bereits verwendet wurde [INFO] [stdout] 62 + if used_ids.contains(&id) { [INFO] [stdout] 63 ~ println!("Prozess mit ID {} existiert bereits. Überspringen.", id); [INFO] [stdout] 64 ~ continue; // Zum nächsten Schleifendurchlauf springen [INFO] [stdout] 65 + } [INFO] [stdout] 66 + [INFO] [stdout] 67 + used_ids.insert(id); // ID als verwendet markieren [INFO] [stdout] 68 + let arrival_time = values[2].parse::()?; [INFO] [stdout] 69 + let execution_time = values[3].parse::()?; [INFO] [stdout] 70 + let start = 0; [INFO] [stdout] 71 + let end = 0; [INFO] [stdout] 72 + let waiting_time = 0; [INFO] [stdout] 73 + let process_time = 0; [INFO] [stdout] 74 + let reaction_time = 0; [INFO] [stdout] 75 + let execution_time_left = execution_time; [INFO] [stdout] 76 + let started = false; [INFO] [stdout] 77 + let completed = false; [INFO] [stdout] 78 + [INFO] [stdout] 79 + let process = process::Process { [INFO] [stdout] 80 + name, [INFO] [stdout] 81 + id, [INFO] [stdout] 82 + arrival_time, [INFO] [stdout] 83 + execution_time, [INFO] [stdout] 84 + start, [INFO] [stdout] 85 + end, [INFO] [stdout] 86 + waiting_time, [INFO] [stdout] 87 + process_time, [INFO] [stdout] 88 + reaction_time, [INFO] [stdout] 89 + execution_time_left, [INFO] [stdout] 90 + started, [INFO] [stdout] 91 + completed, [INFO] [stdout] 92 + }; [INFO] [stdout] 93 + processes.push(process); [INFO] [stdout] 94 + } else { [INFO] [stdout] 95 ~ println!("Ungültige Anzahl von CSV-Werten: {}", values.len()); [INFO] [stdout] 96 ~ println!("Zeile {} wird übersprungen.", line); [INFO] [stdout] 97 + } [INFO] [stdout] 98 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `processes` [INFO] [stdout] --> src/main.rs:246:30 [INFO] [stdout] | [INFO] [stdout] 246 | for i in 0..current { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 246 - for i in 0..current { [INFO] [stdout] 246 + for in processes.iter().take(current) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:284:9 [INFO] [stdout] | [INFO] [stdout] 284 | / if !process.completed { [INFO] [stdout] 285 | | if *time >= process.arrival_time { [INFO] [stdout] 286 | | return true; [INFO] [stdout] 287 | | } [INFO] [stdout] 288 | | } [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] 284 ~ if !process.completed [INFO] [stdout] 285 ~ && *time >= process.arrival_time { [INFO] [stdout] 286 | return true; [INFO] [stdout] 287 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/main.rs:294:5 [INFO] [stdout] | [INFO] [stdout] 294 | processes.sort_by(|a, b| a.execution_time.cmp(&b.execution_time)); [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] 294 - processes.sort_by(|a, b| a.execution_time.cmp(&b.execution_time)); [INFO] [stdout] 294 + processes.sort_by_key(|a| a.execution_time); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/main.rs:299:5 [INFO] [stdout] | [INFO] [stdout] 299 | processes.sort_by(|a, b| a.execution_time_left.cmp(&b.execution_time_left)); [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] 299 - processes.sort_by(|a, b| a.execution_time_left.cmp(&b.execution_time_left)); [INFO] [stdout] 299 + processes.sort_by_key(|a| a.execution_time_left); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:303:46 [INFO] [stdout] | [INFO] [stdout] 303 | fn sort_processes_by_arrival_time(processes: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 303 - fn sort_processes_by_arrival_time(processes: &mut Vec) { [INFO] [stdout] 303 + fn sort_processes_by_arrival_time(processes: &mut [process::Process]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/main.rs:304:5 [INFO] [stdout] | [INFO] [stdout] 304 | processes.sort_by(|a, b| a.arrival_time.cmp(&b.arrival_time)); [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] 304 - processes.sort_by(|a, b| a.arrival_time.cmp(&b.arrival_time)); [INFO] [stdout] 304 + processes.sort_by_key(|a| a.arrival_time); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `processes` [INFO] [stdout] --> src/main.rs:246:30 [INFO] [stdout] | [INFO] [stdout] 246 | for i in 0..current { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 246 - for i in 0..current { [INFO] [stdout] 246 + for in processes.iter().take(current) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:284:9 [INFO] [stdout] | [INFO] [stdout] 284 | / if !process.completed { [INFO] [stdout] 285 | | if *time >= process.arrival_time { [INFO] [stdout] 286 | | return true; [INFO] [stdout] 287 | | } [INFO] [stdout] 288 | | } [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] 284 ~ if !process.completed [INFO] [stdout] 285 ~ && *time >= process.arrival_time { [INFO] [stdout] 286 | return true; [INFO] [stdout] 287 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/main.rs:294:5 [INFO] [stdout] | [INFO] [stdout] 294 | processes.sort_by(|a, b| a.execution_time.cmp(&b.execution_time)); [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] 294 - processes.sort_by(|a, b| a.execution_time.cmp(&b.execution_time)); [INFO] [stdout] 294 + processes.sort_by_key(|a| a.execution_time); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/main.rs:299:5 [INFO] [stdout] | [INFO] [stdout] 299 | processes.sort_by(|a, b| a.execution_time_left.cmp(&b.execution_time_left)); [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] 299 - processes.sort_by(|a, b| a.execution_time_left.cmp(&b.execution_time_left)); [INFO] [stdout] 299 + processes.sort_by_key(|a| a.execution_time_left); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:303:46 [INFO] [stdout] | [INFO] [stdout] 303 | fn sort_processes_by_arrival_time(processes: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 303 - fn sort_processes_by_arrival_time(processes: &mut Vec) { [INFO] [stdout] 303 + fn sort_processes_by_arrival_time(processes: &mut [process::Process]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/main.rs:304:5 [INFO] [stdout] | [INFO] [stdout] 304 | processes.sort_by(|a, b| a.arrival_time.cmp(&b.arrival_time)); [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] 304 - processes.sort_by(|a, b| a.arrival_time.cmp(&b.arrival_time)); [INFO] [stdout] 304 + processes.sort_by_key(|a| a.arrival_time); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.40s [INFO] running `Command { std: "docker" "inspect" "a7be7db8b7618fd502053ac7639f7fee1d6f5296086aea85fd09e9d275766ad2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a7be7db8b7618fd502053ac7639f7fee1d6f5296086aea85fd09e9d275766ad2", kill_on_drop: false }` [INFO] [stdout] a7be7db8b7618fd502053ac7639f7fee1d6f5296086aea85fd09e9d275766ad2