[INFO] cloning repository https://github.com/TegranGrigorian/AssigmentGrader [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TegranGrigorian/AssigmentGrader" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTegranGrigorian%2FAssigmentGrader", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTegranGrigorian%2FAssigmentGrader'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b1fa131cb7b93bdd98daa49d4cef0d9387c381ff [INFO] testing TegranGrigorian/AssigmentGrader against try#b83b707f97d809763b7861afa7638871f3339a33 for pr-145838-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTegranGrigorian%2FAssigmentGrader" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/TegranGrigorian/AssigmentGrader [INFO] finished tweaking git repo https://github.com/TegranGrigorian/AssigmentGrader [INFO] tweaked toml for git repo https://github.com/TegranGrigorian/AssigmentGrader written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/TegranGrigorian/AssigmentGrader on toolchain b83b707f97d809763b7861afa7638871f3339a33 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/TegranGrigorian/AssigmentGrader 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" "+b83b707f97d809763b7861afa7638871f3339a33" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f889cfa11b8b128e01861f0e6849c05fbf4bf46c2ad6118129486737881cfa29 [INFO] running `Command { std: "docker" "start" "-a" "f889cfa11b8b128e01861f0e6849c05fbf4bf46c2ad6118129486737881cfa29", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f889cfa11b8b128e01861f0e6849c05fbf4bf46c2ad6118129486737881cfa29", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f889cfa11b8b128e01861f0e6849c05fbf4bf46c2ad6118129486737881cfa29", kill_on_drop: false }` [INFO] [stdout] f889cfa11b8b128e01861f0e6849c05fbf4bf46c2ad6118129486737881cfa29 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b9dd6c6f97818de9fd833d41f0e29f216a1411bbccd3cbf93f1f2b5928972ce5 [INFO] running `Command { std: "docker" "start" "-a" "b9dd6c6f97818de9fd833d41f0e29f216a1411bbccd3cbf93f1f2b5928972ce5", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.89 [INFO] [stderr] Compiling serde v1.0.215 [INFO] [stderr] Compiling serde_json v1.0.132 [INFO] [stderr] Compiling webbrowser v0.5.5 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Compiling serde_derive v1.0.215 [INFO] [stderr] Compiling ordered-float v2.10.1 [INFO] [stderr] Compiling grader v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Read`, `env::consts`, and `hash::Hash` [INFO] [stdout] --> src/main.rs:3:39 [INFO] [stdout] | [INFO] [stdout] 3 | use std::{char, collections::HashMap, env::consts, hash::Hash, io::{self, Read}}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::CString` [INFO] [stdout] --> src/main.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ffi::CString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::hash::Hasher` [INFO] [stdout] --> src/main.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::hash::Hasher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Component::ParentDir` [INFO] [stdout] --> src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::path::Component::ParentDir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io` [INFO] [stdout] --> src/dataManager.rs:1:37 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::HashMap, fs, io}; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | if (class_name == String::from("Waltauh")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 46 - if (class_name == String::from("Waltauh")) { [INFO] [stdout] 46 + if class_name == String::from("Waltauh") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:113:8 [INFO] [stdout] | [INFO] [stdout] 113 | if (user_input == String::from("P")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 113 - if (user_input == String::from("P")) { [INFO] [stdout] 113 + if user_input == String::from("P") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | ... if (assign == &String::from("NULL")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 199 - if (assign == &String::from("NULL")) { [INFO] [stdout] 199 + if assign == &String::from("NULL") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:279:16 [INFO] [stdout] | [INFO] [stdout] 279 | if (assignment_name == &String::from("NULL")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 279 - if (assignment_name == &String::from("NULL")) { [INFO] [stdout] 279 + if assignment_name == &String::from("NULL") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: denote infinite loops with `loop { ... }` [INFO] [stdout] --> src/main.rs:420:5 [INFO] [stdout] | [INFO] [stdout] 420 | while true { [INFO] [stdout] | ^^^^^^^^^^ help: use `loop` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(while_true)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | let mut userInputChar: char = userInput.chars().next().unwrap(); //unwrap it to expose the first character [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:111:9 [INFO] [stdout] | [INFO] [stdout] 111 | let mut user_input = user_input.trim().to_string(); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `class` [INFO] [stdout] --> src/main.rs:197:26 [INFO] [stdout] | [INFO] [stdout] 197 | for (class, sub_topic, assign, grade) in assignments { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_class` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `classes` [INFO] [stdout] --> src/main.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | classes: &HashMap>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_classes` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topics_constants` [INFO] [stdout] --> src/main.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | sub_topics_constants: &HashMap> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topics_constants` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `class_key` [INFO] [stdout] --> src/main.rs:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | let class_key = class_name_to_key(&user_input_string); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topic_constants` [INFO] [stdout] --> src/main.rs:256:5 [INFO] [stdout] | [INFO] [stdout] 256 | sub_topic_constants: &HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_constants` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topic_grades` [INFO] [stdout] --> src/main.rs:257:5 [INFO] [stdout] | [INFO] [stdout] 257 | sub_topic_grades: &mut HashMap)>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_grades` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `total_weight` [INFO] [stdout] --> src/main.rs:353:17 [INFO] [stdout] | [INFO] [stdout] 353 | let mut total_weight = 0.0; // This will hold the total sum of subtopic constants [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_weight` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_assignments` is assigned to, but never used [INFO] [stdout] --> src/main.rs:354:17 [INFO] [stdout] | [INFO] [stdout] 354 | let mut total_assignments = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_assignments` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topic_grades` [INFO] [stdout] --> src/main.rs:344:5 [INFO] [stdout] | [INFO] [stdout] 344 | sub_topic_grades: &mut HashMap)>> // Calculated subtopic grades [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_grades` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:353:13 [INFO] [stdout] | [INFO] [stdout] 353 | let mut total_weight = 0.0; // This will hold the total sum of subtopic constants [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:390:13 [INFO] [stdout] | [INFO] [stdout] 390 | let mut final_class_grade = total_weighted_subtopic_grades; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `userInputString` is never read [INFO] [stdout] --> src/main.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | let mut userInputString: String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:423:17 [INFO] [stdout] | [INFO] [stdout] 423 | let mut i: i16 = 1; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:423:13 [INFO] [stdout] | [INFO] [stdout] 423 | let mut i: i16 = 1; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `dataManager` should have a snake case name [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | mod dataManager; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `data_manager` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `proccessInput` should have a snake case name [INFO] [stdout] --> src/main.rs:12:4 [INFO] [stdout] | [INFO] [stdout] 12 | fn proccessInput(c:&[char], info:Vec<&str>) -> char { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `proccess_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInput` should have a snake case name [INFO] [stdout] --> src/main.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | let mut userInput: String = String::new(); //create a string for the user input [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `user_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInputChar` should have a snake case name [INFO] [stdout] --> src/main.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | let mut userInputChar: char = userInput.chars().next().unwrap(); //unwrap it to expose the first character [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `user_input_char` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `createClass` should have a snake case name [INFO] [stdout] --> src/main.rs:33:4 [INFO] [stdout] | [INFO] [stdout] 33 | fn createClass( [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `create_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | webbrowser::open("https://www.youtube.com/watch?v=L3duHdRXX04&ab_channel=JohnRonalds"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 47 | let _ = webbrowser::open("https://www.youtube.com/watch?v=L3duHdRXX04&ab_channel=JohnRonalds"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `createAssigment` should have a snake case name [INFO] [stdout] --> src/main.rs:106:4 [INFO] [stdout] | [INFO] [stdout] 106 | fn createAssigment(name: &String,sub_topic:&String,class_name:&String) -> f64 { //might need to add this later : , classes: &HashMap src/main.rs:138:4 [INFO] [stdout] | [INFO] [stdout] 138 | fn editClass( [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `edit_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInput` should have a snake case name [INFO] [stdout] --> src/main.rs:144:13 [INFO] [stdout] | [INFO] [stdout] 144 | let mut userInput = String::new(); [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `user_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `subTopicList` should have a snake case name [INFO] [stdout] --> src/main.rs:145:13 [INFO] [stdout] | [INFO] [stdout] 145 | let mut subTopicList: Vec = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `sub_topic_list` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `viewClass` should have a snake case name [INFO] [stdout] --> src/main.rs:252:4 [INFO] [stdout] | [INFO] [stdout] 252 | fn viewClass( [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `view_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculateGrade` should have a snake case name [INFO] [stdout] --> src/main.rs:340:4 [INFO] [stdout] | [INFO] [stdout] 340 | fn calculateGrade( [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `calculate_grade` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `proccesUserInput` should have a snake case name [INFO] [stdout] --> src/main.rs:418:13 [INFO] [stdout] | [INFO] [stdout] 418 | let mut proccesUserInput: char; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `procces_user_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInputString` should have a snake case name [INFO] [stdout] --> src/main.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | let mut userInputString: String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `user_input_string` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.74s [INFO] running `Command { std: "docker" "inspect" "b9dd6c6f97818de9fd833d41f0e29f216a1411bbccd3cbf93f1f2b5928972ce5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b9dd6c6f97818de9fd833d41f0e29f216a1411bbccd3cbf93f1f2b5928972ce5", kill_on_drop: false }` [INFO] [stdout] b9dd6c6f97818de9fd833d41f0e29f216a1411bbccd3cbf93f1f2b5928972ce5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 71464d7217386a1df4526d061cb76a4ad6fbec2f9918876e7b81269852ed6c0d [INFO] running `Command { std: "docker" "start" "-a" "71464d7217386a1df4526d061cb76a4ad6fbec2f9918876e7b81269852ed6c0d", kill_on_drop: false }` [INFO] [stderr] Compiling grader v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Read`, `env::consts`, and `hash::Hash` [INFO] [stdout] --> src/main.rs:3:39 [INFO] [stdout] | [INFO] [stdout] 3 | use std::{char, collections::HashMap, env::consts, hash::Hash, io::{self, Read}}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::CString` [INFO] [stdout] --> src/main.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ffi::CString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::hash::Hasher` [INFO] [stdout] --> src/main.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::hash::Hasher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Component::ParentDir` [INFO] [stdout] --> src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::path::Component::ParentDir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io` [INFO] [stdout] --> src/dataManager.rs:1:37 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::HashMap, fs, io}; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | if (class_name == String::from("Waltauh")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 46 - if (class_name == String::from("Waltauh")) { [INFO] [stdout] 46 + if class_name == String::from("Waltauh") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:113:8 [INFO] [stdout] | [INFO] [stdout] 113 | if (user_input == String::from("P")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 113 - if (user_input == String::from("P")) { [INFO] [stdout] 113 + if user_input == String::from("P") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | ... if (assign == &String::from("NULL")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 199 - if (assign == &String::from("NULL")) { [INFO] [stdout] 199 + if assign == &String::from("NULL") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:279:16 [INFO] [stdout] | [INFO] [stdout] 279 | if (assignment_name == &String::from("NULL")) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 279 - if (assignment_name == &String::from("NULL")) { [INFO] [stdout] 279 + if assignment_name == &String::from("NULL") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: denote infinite loops with `loop { ... }` [INFO] [stdout] --> src/main.rs:420:5 [INFO] [stdout] | [INFO] [stdout] 420 | while true { [INFO] [stdout] | ^^^^^^^^^^ help: use `loop` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(while_true)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | let mut userInputChar: char = userInput.chars().next().unwrap(); //unwrap it to expose the first character [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:111:9 [INFO] [stdout] | [INFO] [stdout] 111 | let mut user_input = user_input.trim().to_string(); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `class` [INFO] [stdout] --> src/main.rs:197:26 [INFO] [stdout] | [INFO] [stdout] 197 | for (class, sub_topic, assign, grade) in assignments { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_class` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `classes` [INFO] [stdout] --> src/main.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | classes: &HashMap>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_classes` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topics_constants` [INFO] [stdout] --> src/main.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | sub_topics_constants: &HashMap> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topics_constants` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `class_key` [INFO] [stdout] --> src/main.rs:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | let class_key = class_name_to_key(&user_input_string); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topic_constants` [INFO] [stdout] --> src/main.rs:256:5 [INFO] [stdout] | [INFO] [stdout] 256 | sub_topic_constants: &HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_constants` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topic_grades` [INFO] [stdout] --> src/main.rs:257:5 [INFO] [stdout] | [INFO] [stdout] 257 | sub_topic_grades: &mut HashMap)>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_grades` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `total_weight` [INFO] [stdout] --> src/main.rs:353:17 [INFO] [stdout] | [INFO] [stdout] 353 | let mut total_weight = 0.0; // This will hold the total sum of subtopic constants [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_weight` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_assignments` is assigned to, but never used [INFO] [stdout] --> src/main.rs:354:17 [INFO] [stdout] | [INFO] [stdout] 354 | let mut total_assignments = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_assignments` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_topic_grades` [INFO] [stdout] --> src/main.rs:344:5 [INFO] [stdout] | [INFO] [stdout] 344 | sub_topic_grades: &mut HashMap)>> // Calculated subtopic grades [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_grades` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:353:13 [INFO] [stdout] | [INFO] [stdout] 353 | let mut total_weight = 0.0; // This will hold the total sum of subtopic constants [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:390:13 [INFO] [stdout] | [INFO] [stdout] 390 | let mut final_class_grade = total_weighted_subtopic_grades; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `userInputString` is never read [INFO] [stdout] --> src/main.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | let mut userInputString: String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:423:17 [INFO] [stdout] | [INFO] [stdout] 423 | let mut i: i16 = 1; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:423:13 [INFO] [stdout] | [INFO] [stdout] 423 | let mut i: i16 = 1; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `dataManager` should have a snake case name [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | mod dataManager; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `data_manager` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `proccessInput` should have a snake case name [INFO] [stdout] --> src/main.rs:12:4 [INFO] [stdout] | [INFO] [stdout] 12 | fn proccessInput(c:&[char], info:Vec<&str>) -> char { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `proccess_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInput` should have a snake case name [INFO] [stdout] --> src/main.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | let mut userInput: String = String::new(); //create a string for the user input [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `user_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInputChar` should have a snake case name [INFO] [stdout] --> src/main.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | let mut userInputChar: char = userInput.chars().next().unwrap(); //unwrap it to expose the first character [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `user_input_char` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `createClass` should have a snake case name [INFO] [stdout] --> src/main.rs:33:4 [INFO] [stdout] | [INFO] [stdout] 33 | fn createClass( [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `create_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | webbrowser::open("https://www.youtube.com/watch?v=L3duHdRXX04&ab_channel=JohnRonalds"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 47 | let _ = webbrowser::open("https://www.youtube.com/watch?v=L3duHdRXX04&ab_channel=JohnRonalds"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `createAssigment` should have a snake case name [INFO] [stdout] --> src/main.rs:106:4 [INFO] [stdout] | [INFO] [stdout] 106 | fn createAssigment(name: &String,sub_topic:&String,class_name:&String) -> f64 { //might need to add this later : , classes: &HashMap src/main.rs:138:4 [INFO] [stdout] | [INFO] [stdout] 138 | fn editClass( [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `edit_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInput` should have a snake case name [INFO] [stdout] --> src/main.rs:144:13 [INFO] [stdout] | [INFO] [stdout] 144 | let mut userInput = String::new(); [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `user_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `subTopicList` should have a snake case name [INFO] [stdout] --> src/main.rs:145:13 [INFO] [stdout] | [INFO] [stdout] 145 | let mut subTopicList: Vec = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `sub_topic_list` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `viewClass` should have a snake case name [INFO] [stdout] --> src/main.rs:252:4 [INFO] [stdout] | [INFO] [stdout] 252 | fn viewClass( [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `view_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculateGrade` should have a snake case name [INFO] [stdout] --> src/main.rs:340:4 [INFO] [stdout] | [INFO] [stdout] 340 | fn calculateGrade( [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `calculate_grade` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `proccesUserInput` should have a snake case name [INFO] [stdout] --> src/main.rs:418:13 [INFO] [stdout] | [INFO] [stdout] 418 | let mut proccesUserInput: char; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `procces_user_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `userInputString` should have a snake case name [INFO] [stdout] --> src/main.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | let mut userInputString: String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `user_input_string` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.45s [INFO] running `Command { std: "docker" "inspect" "71464d7217386a1df4526d061cb76a4ad6fbec2f9918876e7b81269852ed6c0d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "71464d7217386a1df4526d061cb76a4ad6fbec2f9918876e7b81269852ed6c0d", kill_on_drop: false }` [INFO] [stdout] 71464d7217386a1df4526d061cb76a4ad6fbec2f9918876e7b81269852ed6c0d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+b83b707f97d809763b7861afa7638871f3339a33" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 3734842f51fff45b7a94cdc6d858c75edf51abd9f493812ec0da1b010f6e0b2f [INFO] running `Command { std: "docker" "start" "-a" "3734842f51fff45b7a94cdc6d858c75edf51abd9f493812ec0da1b010f6e0b2f", kill_on_drop: false }` [INFO] [stderr] warning: unused imports: `Read`, `env::consts`, and `hash::Hash` [INFO] [stderr] --> src/main.rs:3:39 [INFO] [stderr] | [INFO] [stderr] 3 | use std::{char, collections::HashMap, env::consts, hash::Hash, io::{self, Read}}; [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ffi::CString` [INFO] [stderr] --> src/main.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ffi::CString; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::hash::Hasher` [INFO] [stderr] --> src/main.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::hash::Hasher; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::Component::ParentDir` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::path::Component::ParentDir; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `io` [INFO] [stderr] --> src/dataManager.rs:1:37 [INFO] [stderr] | [INFO] [stderr] 1 | use std::{collections::HashMap, fs, io}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | if (class_name == String::from("Waltauh")) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 46 - if (class_name == String::from("Waltauh")) { [INFO] [stderr] 46 + if class_name == String::from("Waltauh") { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:113:8 [INFO] [stderr] | [INFO] [stderr] 113 | if (user_input == String::from("P")) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 113 - if (user_input == String::from("P")) { [INFO] [stderr] 113 + if user_input == String::from("P") { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:199:32 [INFO] [stderr] | [INFO] [stderr] 199 | ... if (assign == &String::from("NULL")) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 199 - if (assign == &String::from("NULL")) { [INFO] [stderr] 199 + if assign == &String::from("NULL") { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:279:16 [INFO] [stderr] | [INFO] [stderr] 279 | if (assignment_name == &String::from("NULL")) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 279 - if (assignment_name == &String::from("NULL")) { [INFO] [stderr] 279 + if assignment_name == &String::from("NULL") { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: denote infinite loops with `loop { ... }` [INFO] [stderr] --> src/main.rs:420:5 [INFO] [stderr] | [INFO] [stderr] 420 | while true { [INFO] [stderr] | ^^^^^^^^^^ help: use `loop` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(while_true)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | let mut userInputChar: char = userInput.chars().next().unwrap(); //unwrap it to expose the first character [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | let mut user_input = user_input.trim().to_string(); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `class` [INFO] [stderr] --> src/main.rs:197:26 [INFO] [stderr] | [INFO] [stderr] 197 | for (class, sub_topic, assign, grade) in assignments { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_class` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `classes` [INFO] [stderr] --> src/main.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | classes: &HashMap>, [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_classes` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sub_topics_constants` [INFO] [stderr] --> src/main.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | sub_topics_constants: &HashMap> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topics_constants` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `class_key` [INFO] [stderr] --> src/main.rs:261:9 [INFO] [stderr] | [INFO] [stderr] 261 | let class_key = class_name_to_key(&user_input_string); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_key` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sub_topic_constants` [INFO] [stderr] --> src/main.rs:256:5 [INFO] [stderr] | [INFO] [stderr] 256 | sub_topic_constants: &HashMap>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_constants` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sub_topic_grades` [INFO] [stderr] --> src/main.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | sub_topic_grades: &mut HashMap)>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_grades` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `total_weight` [INFO] [stderr] --> src/main.rs:353:17 [INFO] [stderr] | [INFO] [stderr] 353 | let mut total_weight = 0.0; // This will hold the total sum of subtopic constants [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_weight` [INFO] [stderr] [INFO] [stderr] warning: variable `total_assignments` is assigned to, but never used [INFO] [stderr] --> src/main.rs:354:17 [INFO] [stderr] | [INFO] [stderr] 354 | let mut total_assignments = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_total_assignments` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sub_topic_grades` [INFO] [stderr] --> src/main.rs:344:5 [INFO] [stderr] | [INFO] [stderr] 344 | sub_topic_grades: &mut HashMap)>> // Calculated subtopic grades [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_topic_grades` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | let mut total_weight = 0.0; // This will hold the total sum of subtopic constants [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | let mut final_class_grade = total_weighted_subtopic_grades; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `userInputString` is never read [INFO] [stderr] --> src/main.rs:419:13 [INFO] [stderr] | [INFO] [stderr] 419 | let mut userInputString: String = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:423:17 [INFO] [stderr] | [INFO] [stderr] 423 | let mut i: i16 = 1; [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:423:13 [INFO] [stderr] | [INFO] [stderr] 423 | let mut i: i16 = 1; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: module `dataManager` should have a snake case name [INFO] [stderr] --> src/main.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | mod dataManager; [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to snake case: `data_manager` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `proccessInput` should have a snake case name [INFO] [stderr] --> src/main.rs:12:4 [INFO] [stderr] | [INFO] [stderr] 12 | fn proccessInput(c:&[char], info:Vec<&str>) -> char { [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `proccess_input` [INFO] [stderr] [INFO] [stderr] warning: variable `userInput` should have a snake case name [INFO] [stderr] --> src/main.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | let mut userInput: String = String::new(); //create a string for the user input [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `user_input` [INFO] [stderr] [INFO] [stderr] warning: variable `userInputChar` should have a snake case name [INFO] [stderr] --> src/main.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | let mut userInputChar: char = userInput.chars().next().unwrap(); //unwrap it to expose the first character [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `user_input_char` [INFO] [stderr] [INFO] [stderr] warning: function `createClass` should have a snake case name [INFO] [stderr] --> src/main.rs:33:4 [INFO] [stderr] | [INFO] [stderr] 33 | fn createClass( [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to snake case: `create_class` [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/main.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | webbrowser::open("https://www.youtube.com/watch?v=L3duHdRXX04&ab_channel=JohnRonalds"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 47 | let _ = webbrowser::open("https://www.youtube.com/watch?v=L3duHdRXX04&ab_channel=JohnRonalds"); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: function `createAssigment` should have a snake case name [INFO] [stderr] --> src/main.rs:106:4 [INFO] [stderr] | [INFO] [stderr] 106 | fn createAssigment(name: &String,sub_topic:&String,class_name:&String) -> f64 { //might need to add this later : , classes: &HashMap src/main.rs:138:4 [INFO] [stderr] | [INFO] [stderr] 138 | fn editClass( [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `edit_class` [INFO] [stderr] [INFO] [stderr] warning: variable `userInput` should have a snake case name [INFO] [stderr] --> src/main.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | let mut userInput = String::new(); [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `user_input` [INFO] [stderr] [INFO] [stderr] warning: variable `subTopicList` should have a snake case name [INFO] [stderr] --> src/main.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | let mut subTopicList: Vec = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `sub_topic_list` [INFO] [stderr] [INFO] [stderr] warning: function `viewClass` should have a snake case name [INFO] [stderr] --> src/main.rs:252:4 [INFO] [stderr] | [INFO] [stderr] 252 | fn viewClass( [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `view_class` [INFO] [stderr] [INFO] [stderr] warning: function `calculateGrade` should have a snake case name [INFO] [stderr] --> src/main.rs:340:4 [INFO] [stderr] | [INFO] [stderr] 340 | fn calculateGrade( [INFO] [stderr] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `calculate_grade` [INFO] [stderr] [INFO] [stderr] warning: variable `proccesUserInput` should have a snake case name [INFO] [stderr] --> src/main.rs:418:13 [INFO] [stderr] | [INFO] [stderr] 418 | let mut proccesUserInput: char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `procces_user_input` [INFO] [stderr] [INFO] [stderr] warning: variable `userInputString` should have a snake case name [INFO] [stderr] --> src/main.rs:419:13 [INFO] [stderr] | [INFO] [stderr] 419 | let mut userInputString: String = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `user_input_string` [INFO] [stderr] [INFO] [stderr] warning: `grader` (bin "grader" test) generated 40 warnings (run `cargo fix --bin "grader" --tests` to apply 15 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/grader-93fa8c07972b08aa) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "3734842f51fff45b7a94cdc6d858c75edf51abd9f493812ec0da1b010f6e0b2f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3734842f51fff45b7a94cdc6d858c75edf51abd9f493812ec0da1b010f6e0b2f", kill_on_drop: false }` [INFO] [stdout] 3734842f51fff45b7a94cdc6d858c75edf51abd9f493812ec0da1b010f6e0b2f