[INFO] fetching crate ccny-course-catalog 0.1.4... [INFO] testing ccny-course-catalog-0.1.4 against master#cdb45c87e2cd43495379f7e867e3cc15dcee9f93 for pr-145838-1 [INFO] extracting crate ccny-course-catalog 0.1.4 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate ccny-course-catalog 0.1.4 [INFO] finished tweaking crates.io crate ccny-course-catalog 0.1.4 [INFO] tweaked toml for crates.io crate ccny-course-catalog 0.1.4 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate ccny-course-catalog 0.1.4 on toolchain cdb45c87e2cd43495379f7e867e3cc15dcee9f93 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate ccny-course-catalog 0.1.4 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" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded filepath v0.2.0 [INFO] [stderr] Downloaded async-compression v0.4.18 [INFO] [stderr] Downloaded rayon v0.7.1 [INFO] [stderr] Downloaded closestmatch v0.1.2 [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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5f388743e33f293b49021efbe56313b3892d866c380badea9298d6ec713a18e7 [INFO] running `Command { std: "docker" "start" "-a" "5f388743e33f293b49021efbe56313b3892d866c380badea9298d6ec713a18e7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5f388743e33f293b49021efbe56313b3892d866c380badea9298d6ec713a18e7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5f388743e33f293b49021efbe56313b3892d866c380badea9298d6ec713a18e7", kill_on_drop: false }` [INFO] [stdout] 5f388743e33f293b49021efbe56313b3892d866c380badea9298d6ec713a18e7 [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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ad4eae012502615fbd8e97ce89eeb051c62bc0afad61d922afdcc3687f3aea3c [INFO] running `Command { std: "docker" "start" "-a" "ad4eae012502615fbd8e97ce89eeb051c62bc0afad61d922afdcc3687f3aea3c", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.93 [INFO] [stderr] Compiling cc v1.2.9 [INFO] [stderr] Compiling openssl v0.10.68 [INFO] [stderr] Compiling hashbrown v0.15.2 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Compiling serde_json v1.0.135 [INFO] [stderr] Compiling miniz_oxide v0.8.3 [INFO] [stderr] Compiling rustls-pki-types v1.10.1 [INFO] [stderr] Compiling filepath v0.2.0 [INFO] [stderr] Compiling rayon v0.7.1 [INFO] [stderr] Compiling flate2 v1.0.35 [INFO] [stderr] Compiling indexmap v2.7.0 [INFO] [stderr] Compiling lru v0.13.0 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Compiling rustls-pemfile v2.2.0 [INFO] [stderr] Compiling closestmatch v0.1.2 [INFO] [stderr] Compiling syn v2.0.96 [INFO] [stderr] Compiling openssl-sys v0.9.104 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.5 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.217 [INFO] [stderr] Compiling tokio v1.43.0 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling zerofrom v0.1.5 [INFO] [stderr] Compiling yoke v0.7.5 [INFO] [stderr] Compiling zerovec v0.10.4 [INFO] [stderr] Compiling tinystr v0.7.6 [INFO] [stderr] Compiling icu_collections v1.5.0 [INFO] [stderr] Compiling serde v1.0.217 [INFO] [stderr] Compiling icu_locid v1.5.0 [INFO] [stderr] Compiling icu_provider v1.5.0 [INFO] [stderr] Compiling icu_locid_transform v1.5.0 [INFO] [stderr] Compiling icu_properties v1.5.1 [INFO] [stderr] Compiling http-body-util v0.1.2 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling tokio-util v0.7.13 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower v0.5.2 [INFO] [stderr] Compiling async-compression v0.4.18 [INFO] [stderr] Compiling h2 v0.4.7 [INFO] [stderr] Compiling icu_normalizer v1.5.0 [INFO] [stderr] Compiling idna_adapter v1.2.0 [INFO] [stderr] Compiling idna v1.0.3 [INFO] [stderr] Compiling url v2.5.4 [INFO] [stderr] Compiling hyper v1.5.2 [INFO] [stderr] Compiling hyper-util v0.1.10 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.12 [INFO] [stderr] Compiling ccny-course-catalog v0.1.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::mem; [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 imports: `ACCEPT`, `CONTENT_TYPE`, `HeaderMap`, `HeaderValue`, `ORIGIN`, and `REFERER` [INFO] [stdout] --> src/api/course_finder.rs:6:23 [INFO] [stdout] | [INFO] [stdout] 6 | use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, ORIGIN, REFERER}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/course_finder.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `fs` and `io::Write` [INFO] [stdout] --> src/api/course_finder.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | use std::{fs, io::Write}; [INFO] [stdout] | ^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/api/course_finder.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::Borrow` [INFO] [stdout] --> src/api/course_finder.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::borrow::Borrow; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/api/course_finder.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ptr::null` [INFO] [stdout] --> src/api/course_finder.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::ptr::null; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::course_finder` [INFO] [stdout] --> src/api/utils.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::api::course_finder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io::Write` [INFO] [stdout] --> src/api/utils.rs:7:15 [INFO] [stdout] | [INFO] [stdout] 7 | use std::{fs, io::Write}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CourseComponents` and `CourseInfo` [INFO] [stdout] --> src/lib.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | use models::course::{CourseComponents, CourseInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `effective_end_date_placeholder` [INFO] [stdout] --> src/api/department.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/department.rs:53:25 [INFO] [stdout] | [INFO] [stdout] 53 | let mut course_component_instance = CourseComponents { [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/api/department.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut course_info_instance = CourseInfo { [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `json_string` [INFO] [stdout] --> src/api/course_finder.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | let json_string : serde_json::Value = serde_json::from_str(&body)?; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_json_string` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `closest_course_groupID` [INFO] [stdout] --> src/api/course_finder.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/course_finder.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [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/api/course_finder.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_name_and_code_mapping` [INFO] [stdout] --> src/api/course_finder.rs:110:9 [INFO] [stdout] | [INFO] [stdout] 110 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read [INFO] [stdout] --> src/api/course_finder.rs:112:13 [INFO] [stdout] | [INFO] [stdout] 112 | let mut complete_course_group_id : 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: `department_courses` [INFO] [stdout] --> src/api/utils.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | let department_courses : Vec = fetch_courses_by_department(department_name).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_department_courses` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/api/department.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/api/department.rs:313:14 [INFO] [stdout] | [INFO] [stdout] 313 | for (key,value) in department_mapping.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/api/course_finder.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/api/utils.rs:35:14 [INFO] [stdout] | [INFO] [stdout] 35 | for (key,value) in hashmap_input.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_SIZE` is never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const DEFAULT_MAX_SIZE : u64 = 256; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CustomHashMap` is never constructed [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct CustomHashMap { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyValue` is never constructed [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct KeyValue { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl KeyValue { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn new(key : T, value : V) -> KeyValue { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 57 | impl CustomHashMap { [INFO] [stdout] | --------------------------------------------------------------- associated items in this implementation [INFO] [stdout] 58 | const INIT : Option> = None; // we use const to avoid running into borrow/ownership related errors that may arise [INFO] [stdout] | ^^^^ [INFO] [stdout] 59 | [INFO] [stdout] 60 | pub fn new() -> CustomHashMap { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn insert(&mut self, key : T, val : V) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn insert_new_value(&mut self, key : T, val : V, position : usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn update_or_link_new_val(&mut self, key : T, val : V, position : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn get(&self, key : T) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | fn check_list_for_key(&self, key : T, position : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub fn remove(&mut self, key : T) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | fn check_item_in_list_and_remove(&mut self, key : T, position : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 303 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 308 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `hash_key` is never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:322:4 [INFO] [stdout] | [INFO] [stdout] 322 | fn hash_key(key : T) -> u64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CustomLruCache` is never constructed [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct CustomLruCache { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl CustomLruCache { [INFO] [stdout] | --------------------------------------------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn new(capacity : usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn get(&mut self, key : &K) -> Option<&V> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mut(&mut self, key : &K) -> Option<&mut V> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn insert(&mut self, key : K, value : V) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn remove(&mut self, key : &K) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn move_to_front(&mut self, node_idx : usize) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | fn remove_node(&mut self, node_idx : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn evict_tail(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `retrieve_historical_terms` is never used [INFO] [stdout] --> src/api/course_finder.rs:16:14 [INFO] [stdout] | [INFO] [stdout] 16 | pub async fn retrieve_historical_terms() -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_course_list_by_department` is never used [INFO] [stdout] --> src/api/utils.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn get_course_list_by_department(department_name : &str) -> Result, anyhow::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_type_of` is never used [INFO] [stdout] --> src/api/utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn print_type_of(_ : &T) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save_to_file` is never used [INFO] [stdout] --> src/api/utils.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn save_to_file(data: &serde_json::Value, filename: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_hashmap_keys` is never used [INFO] [stdout] --> src/api/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn print_hashmap_keys(hashmap_input : HashMap) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stdout] --> src/api/department.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stdout] --> src/api/course_finder.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `list_of_courses` [INFO] [stdout] --> src/bin/experimental.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | let mut list_of_courses = course_instance.get_courses_list().await; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_courses` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_info` [INFO] [stdout] --> src/bin/experimental.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut course_info = course_instance.get_course_info().await; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_info` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/experimental.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("algorithms"))); [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/bin/experimental.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | let mut list_of_courses = course_instance.get_courses_list().await; [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/bin/experimental.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut course_info = course_instance.get_course_info().await; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io::Write` [INFO] [stdout] --> src/main.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use std::{fs, io::Write}; [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::ptr::null` [INFO] [stdout] --> src/main.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::ptr::null; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `closest_course_groupID` [INFO] [stdout] --> src/main.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (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:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [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:71:9 [INFO] [stdout] | [INFO] [stdout] 71 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_name_and_code_mapping` [INFO] [stdout] --> src/main.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read [INFO] [stdout] --> src/main.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | let mut complete_course_group_id : 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: `effective_end_date_placeholder` [INFO] [stdout] --> src/main.rs:377:17 [INFO] [stdout] | [INFO] [stdout] 377 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:354:25 [INFO] [stdout] | [INFO] [stdout] 354 | let mut course_component_instance = CourseComponents { [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:399:17 [INFO] [stdout] | [INFO] [stdout] 399 | let mut course_info_instance = CourseInfo { [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `curr_dept` [INFO] [stdout] --> src/main.rs:450:17 [INFO] [stdout] | [INFO] [stdout] 450 | let mut curr_dept = String::from(department); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_dept` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:450:13 [INFO] [stdout] | [INFO] [stdout] 450 | let mut curr_dept = String::from(department); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/main.rs:540:14 [INFO] [stdout] | [INFO] [stdout] 540 | for (key,value) in hashmap_input.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/main.rs:551:14 [INFO] [stdout] | [INFO] [stdout] 551 | for (key,value) in department_mapping.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/main.rs:572:13 [INFO] [stdout] | [INFO] [stdout] 572 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stdout] --> src/main.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stdout] --> src/main.rs:310:13 [INFO] [stdout] | [INFO] [stdout] 310 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.99s [INFO] running `Command { std: "docker" "inspect" "ad4eae012502615fbd8e97ce89eeb051c62bc0afad61d922afdcc3687f3aea3c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ad4eae012502615fbd8e97ce89eeb051c62bc0afad61d922afdcc3687f3aea3c", kill_on_drop: false }` [INFO] [stdout] ad4eae012502615fbd8e97ce89eeb051c62bc0afad61d922afdcc3687f3aea3c [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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1fcb5c155dba4c9839a662c7b9d9b45f1165e2be1c7e1007e794869d14bd9710 [INFO] running `Command { std: "docker" "start" "-a" "1fcb5c155dba4c9839a662c7b9d9b45f1165e2be1c7e1007e794869d14bd9710", kill_on_drop: false }` [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::mem; [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 imports: `ACCEPT`, `CONTENT_TYPE`, `HeaderMap`, `HeaderValue`, `ORIGIN`, and `REFERER` [INFO] [stdout] --> src/api/course_finder.rs:6:23 [INFO] [stdout] | [INFO] [stdout] 6 | use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, ORIGIN, REFERER}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/course_finder.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `fs` and `io::Write` [INFO] [stdout] --> src/api/course_finder.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | use std::{fs, io::Write}; [INFO] [stdout] | ^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/api/course_finder.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::Borrow` [INFO] [stdout] --> src/api/course_finder.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::borrow::Borrow; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/api/course_finder.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ptr::null` [INFO] [stdout] --> src/api/course_finder.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::ptr::null; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::course_finder` [INFO] [stdout] --> src/api/utils.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::api::course_finder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io::Write` [INFO] [stdout] --> src/api/utils.rs:7:15 [INFO] [stdout] | [INFO] [stdout] 7 | use std::{fs, io::Write}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CourseComponents` and `CourseInfo` [INFO] [stdout] --> src/lib.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | use models::course::{CourseComponents, CourseInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `effective_end_date_placeholder` [INFO] [stdout] --> src/api/department.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/department.rs:53:25 [INFO] [stdout] | [INFO] [stdout] 53 | let mut course_component_instance = CourseComponents { [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/api/department.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut course_info_instance = CourseInfo { [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `json_string` [INFO] [stdout] --> src/api/course_finder.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | let json_string : serde_json::Value = serde_json::from_str(&body)?; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_json_string` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `closest_course_groupID` [INFO] [stdout] --> src/api/course_finder.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/course_finder.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [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/api/course_finder.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_name_and_code_mapping` [INFO] [stdout] --> src/api/course_finder.rs:110:9 [INFO] [stdout] | [INFO] [stdout] 110 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read [INFO] [stdout] --> src/api/course_finder.rs:112:13 [INFO] [stdout] | [INFO] [stdout] 112 | let mut complete_course_group_id : 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: `department_courses` [INFO] [stdout] --> src/api/utils.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | let department_courses : Vec = fetch_courses_by_department(department_name).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_department_courses` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/api/department.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/api/department.rs:313:14 [INFO] [stdout] | [INFO] [stdout] 313 | for (key,value) in department_mapping.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/api/course_finder.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/api/utils.rs:35:14 [INFO] [stdout] | [INFO] [stdout] 35 | for (key,value) in hashmap_input.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_SIZE` is never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const DEFAULT_MAX_SIZE : u64 = 256; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CustomHashMap` is never constructed [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct CustomHashMap { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyValue` is never constructed [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct KeyValue { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl KeyValue { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn new(key : T, value : V) -> KeyValue { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 57 | impl CustomHashMap { [INFO] [stdout] | --------------------------------------------------------------- associated items in this implementation [INFO] [stdout] 58 | const INIT : Option> = None; // we use const to avoid running into borrow/ownership related errors that may arise [INFO] [stdout] | ^^^^ [INFO] [stdout] 59 | [INFO] [stdout] 60 | pub fn new() -> CustomHashMap { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn insert(&mut self, key : T, val : V) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn insert_new_value(&mut self, key : T, val : V, position : usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn update_or_link_new_val(&mut self, key : T, val : V, position : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn get(&self, key : T) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | fn check_list_for_key(&self, key : T, position : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub fn remove(&mut self, key : T) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | fn check_item_in_list_and_remove(&mut self, key : T, position : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 303 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 308 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `hash_key` is never used [INFO] [stdout] --> src/data_structures/custom_hashmap.rs:322:4 [INFO] [stdout] | [INFO] [stdout] 322 | fn hash_key(key : T) -> u64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CustomLruCache` is never constructed [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct CustomLruCache { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl CustomLruCache { [INFO] [stdout] | --------------------------------------------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn new(capacity : usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn get(&mut self, key : &K) -> Option<&V> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mut(&mut self, key : &K) -> Option<&mut V> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn insert(&mut self, key : K, value : V) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn remove(&mut self, key : &K) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn move_to_front(&mut self, node_idx : usize) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | fn remove_node(&mut self, node_idx : usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn evict_tail(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `retrieve_historical_terms` is never used [INFO] [stdout] --> src/api/course_finder.rs:16:14 [INFO] [stdout] | [INFO] [stdout] 16 | pub async fn retrieve_historical_terms() -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_course_list_by_department` is never used [INFO] [stdout] --> src/api/utils.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn get_course_list_by_department(department_name : &str) -> Result, anyhow::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_type_of` is never used [INFO] [stdout] --> src/api/utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn print_type_of(_ : &T) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save_to_file` is never used [INFO] [stdout] --> src/api/utils.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn save_to_file(data: &serde_json::Value, filename: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_hashmap_keys` is never used [INFO] [stdout] --> src/api/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn print_hashmap_keys(hashmap_input : HashMap) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stdout] --> src/api/department.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stdout] --> src/api/course_finder.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling ccny-course-catalog v0.1.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `list_of_courses` [INFO] [stdout] --> src/bin/experimental.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | let mut list_of_courses = course_instance.get_courses_list().await; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_courses` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_info` [INFO] [stdout] --> src/bin/experimental.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut course_info = course_instance.get_course_info().await; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_info` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/experimental.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("algorithms"))); [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/bin/experimental.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | let mut list_of_courses = course_instance.get_courses_list().await; [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/bin/experimental.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut course_info = course_instance.get_course_info().await; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::mem; [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 imports: `ACCEPT`, `CONTENT_TYPE`, `HeaderMap`, `HeaderValue`, `ORIGIN`, and `REFERER` [INFO] [stdout] --> src/api/course_finder.rs:6:23 [INFO] [stdout] | [INFO] [stdout] 6 | use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, ORIGIN, REFERER}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/course_finder.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `fs` and `io::Write` [INFO] [stdout] --> src/api/course_finder.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | use std::{fs, io::Write}; [INFO] [stdout] | ^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/api/course_finder.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::Borrow` [INFO] [stdout] --> src/api/course_finder.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::borrow::Borrow; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/api/course_finder.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ptr::null` [INFO] [stdout] --> src/api/course_finder.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::ptr::null; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::course_finder` [INFO] [stdout] --> src/api/utils.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::api::course_finder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io::Write` [INFO] [stdout] --> src/api/utils.rs:7:15 [INFO] [stdout] | [INFO] [stdout] 7 | use std::{fs, io::Write}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CourseComponents` and `CourseInfo` [INFO] [stdout] --> src/lib.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | use models::course::{CourseComponents, CourseInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io::Write` [INFO] [stdout] --> src/main.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use std::{fs, io::Write}; [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::ptr::null` [INFO] [stdout] --> src/main.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::ptr::null; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `effective_end_date_placeholder` [INFO] [stdout] --> src/api/department.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `closest_course_groupID` [INFO] [stdout] --> src/main.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (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:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [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:71:9 [INFO] [stdout] | [INFO] [stdout] 71 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [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/api/department.rs:53:25 [INFO] [stdout] | [INFO] [stdout] 53 | let mut course_component_instance = CourseComponents { [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/api/department.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut course_info_instance = CourseInfo { [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_name_and_code_mapping` [INFO] [stdout] --> src/main.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read [INFO] [stdout] --> src/main.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | let mut complete_course_group_id : 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: `json_string` [INFO] [stdout] --> src/api/course_finder.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | let json_string : serde_json::Value = serde_json::from_str(&body)?; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_json_string` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `closest_course_groupID` [INFO] [stdout] --> src/api/course_finder.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/course_finder.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [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/api/course_finder.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `course_name_and_code_mapping` [INFO] [stdout] --> src/api/course_finder.rs:110:9 [INFO] [stdout] | [INFO] [stdout] 110 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read [INFO] [stdout] --> src/api/course_finder.rs:112:13 [INFO] [stdout] | [INFO] [stdout] 112 | let mut complete_course_group_id : 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: `department_courses` [INFO] [stdout] --> src/api/utils.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | let department_courses : Vec = fetch_courses_by_department(department_name).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_department_courses` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `effective_end_date_placeholder` [INFO] [stdout] --> src/main.rs:377:17 [INFO] [stdout] | [INFO] [stdout] 377 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:354:25 [INFO] [stdout] | [INFO] [stdout] 354 | let mut course_component_instance = CourseComponents { [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:399:17 [INFO] [stdout] | [INFO] [stdout] 399 | let mut course_info_instance = CourseInfo { [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `curr_dept` [INFO] [stdout] --> src/main.rs:450:17 [INFO] [stdout] | [INFO] [stdout] 450 | let mut curr_dept = String::from(department); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_dept` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:450:13 [INFO] [stdout] | [INFO] [stdout] 450 | let mut curr_dept = String::from(department); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/main.rs:540:14 [INFO] [stdout] | [INFO] [stdout] 540 | for (key,value) in hashmap_input.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/main.rs:551:14 [INFO] [stdout] | [INFO] [stdout] 551 | for (key,value) in department_mapping.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/main.rs:572:13 [INFO] [stdout] | [INFO] [stdout] 572 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stdout] --> src/main.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stdout] --> src/main.rs:310:13 [INFO] [stdout] | [INFO] [stdout] 310 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/api/department.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/api/department.rs:313:14 [INFO] [stdout] | [INFO] [stdout] 313 | for (key,value) in department_mapping.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_string` is never read [INFO] [stdout] --> src/api/course_finder.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut result_string : String = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/api/utils.rs:35:14 [INFO] [stdout] | [INFO] [stdout] 35 | for (key,value) in hashmap_input.into_iter() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_mut` and `remove` are never used [INFO] [stdout] --> src/data_structures/custom_lru_cache.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl CustomLruCache { [INFO] [stdout] | --------------------------------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mut(&mut self, key : &K) -> Option<&mut V> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn remove(&mut self, key : &K) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `retrieve_historical_terms` is never used [INFO] [stdout] --> src/api/course_finder.rs:16:14 [INFO] [stdout] | [INFO] [stdout] 16 | pub async fn retrieve_historical_terms() -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_course_list_by_department` is never used [INFO] [stdout] --> src/api/utils.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn get_course_list_by_department(department_name : &str) -> Result, anyhow::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_type_of` is never used [INFO] [stdout] --> src/api/utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn print_type_of(_ : &T) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save_to_file` is never used [INFO] [stdout] --> src/api/utils.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn save_to_file(data: &serde_json::Value, filename: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_hashmap_keys` is never used [INFO] [stdout] --> src/api/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn print_hashmap_keys(hashmap_input : HashMap) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stdout] --> src/api/department.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stdout] --> src/api/course_finder.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.43s [INFO] running `Command { std: "docker" "inspect" "1fcb5c155dba4c9839a662c7b9d9b45f1165e2be1c7e1007e794869d14bd9710", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1fcb5c155dba4c9839a662c7b9d9b45f1165e2be1c7e1007e794869d14bd9710", kill_on_drop: false }` [INFO] [stdout] 1fcb5c155dba4c9839a662c7b9d9b45f1165e2be1c7e1007e794869d14bd9710 [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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 142ace9b8ca4c32b29c93ce6f7cb6402b608a6e5973b0659c855599942507c3d [INFO] running `Command { std: "docker" "start" "-a" "142ace9b8ca4c32b29c93ce6f7cb6402b608a6e5973b0659c855599942507c3d", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::mem` [INFO] [stderr] --> src/data_structures/custom_lru_cache.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ACCEPT`, `CONTENT_TYPE`, `HeaderMap`, `HeaderValue`, `ORIGIN`, and `REFERER` [INFO] [stderr] --> src/api/course_finder.rs:6:23 [INFO] [stderr] | [INFO] [stderr] 6 | use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, ORIGIN, REFERER}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `serde_json::json` [INFO] [stderr] --> src/api/course_finder.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use serde_json::json; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `fs` and `io::Write` [INFO] [stderr] --> src/api/course_finder.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | use std::{fs, io::Write}; [INFO] [stderr] | ^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::PathBuf` [INFO] [stderr] --> src/api/course_finder.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::path::PathBuf; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Borrow` [INFO] [stderr] --> src/api/course_finder.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::borrow::Borrow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stderr] --> src/api/course_finder.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | use serde::{Deserialize, Serialize}; [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr::null` [INFO] [stderr] --> src/api/course_finder.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use std::ptr::null; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::api::course_finder` [INFO] [stderr] --> src/api/utils.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::api::course_finder; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `io::Write` [INFO] [stderr] --> src/api/utils.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | use std::{fs, io::Write}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `CourseComponents` and `CourseInfo` [INFO] [stderr] --> src/lib.rs:18:22 [INFO] [stderr] | [INFO] [stderr] 18 | use models::course::{CourseComponents, CourseInfo}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `effective_end_date_placeholder` [INFO] [stderr] --> src/api/department.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/api/department.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let mut course_component_instance = CourseComponents { [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/api/department.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | let mut course_info_instance = CourseInfo { [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `json_string` [INFO] [stderr] --> src/api/course_finder.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let json_string : serde_json::Value = serde_json::from_str(&body)?; [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_json_string` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `closest_course_groupID` [INFO] [stderr] --> src/api/course_finder.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/api/course_finder.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [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/api/course_finder.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `course_name_and_code_mapping` [INFO] [stderr] --> src/api/course_finder.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `complete_course_group_id` is never read [INFO] [stderr] --> src/api/course_finder.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | let mut complete_course_group_id : 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: `department_courses` [INFO] [stderr] --> src/api/utils.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | let department_courses : Vec = fetch_courses_by_department(department_name).await?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_department_courses` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result_string` is never read [INFO] [stderr] --> src/api/department.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | let mut result_string : String = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/api/department.rs:313:14 [INFO] [stderr] | [INFO] [stderr] 313 | for (key,value) in department_mapping.into_iter() { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result_string` is never read [INFO] [stderr] --> src/api/course_finder.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let mut result_string : String = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/api/utils.rs:35:14 [INFO] [stderr] | [INFO] [stderr] 35 | for (key,value) in hashmap_input.into_iter() { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: constant `DEFAULT_MAX_SIZE` is never used [INFO] [stderr] --> src/data_structures/custom_hashmap.rs:9:7 [INFO] [stderr] | [INFO] [stderr] 9 | const DEFAULT_MAX_SIZE : u64 = 256; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: struct `CustomHashMap` is never constructed [INFO] [stderr] --> src/data_structures/custom_hashmap.rs:13:12 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct CustomHashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `KeyValue` is never constructed [INFO] [stderr] --> src/data_structures/custom_hashmap.rs:24:12 [INFO] [stderr] | [INFO] [stderr] 24 | pub struct KeyValue { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/data_structures/custom_hashmap.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 33 | impl KeyValue { [INFO] [stderr] | ----------------------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 36 | pub fn new(key : T, value : V) -> KeyValue { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/data_structures/custom_hashmap.rs:58:11 [INFO] [stderr] | [INFO] [stderr] 57 | impl CustomHashMap { [INFO] [stderr] | --------------------------------------------------------------- associated items in this implementation [INFO] [stderr] 58 | const INIT : Option> = None; // we use const to avoid running into borrow/ownership related errors that may arise [INFO] [stderr] | ^^^^ [INFO] [stderr] 59 | [INFO] [stderr] 60 | pub fn new() -> CustomHashMap { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 68 | pub fn insert(&mut self, key : T, val : V) -> Option { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 97 | fn insert_new_value(&mut self, key : T, val : V, position : usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 107 | fn update_or_link_new_val(&mut self, key : T, val : V, position : usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 172 | pub fn get(&self, key : T) -> Option { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 186 | fn check_list_for_key(&self, key : T, position : usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 216 | pub fn remove(&mut self, key : T) -> Option { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 230 | fn check_item_in_list_and_remove(&mut self, key : T, position : usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 303 | pub fn clear(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 308 | pub fn len(&self) -> usize { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 312 | pub fn is_empty(&self) -> bool { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `hash_key` is never used [INFO] [stderr] --> src/data_structures/custom_hashmap.rs:322:4 [INFO] [stderr] | [INFO] [stderr] 322 | fn hash_key(key : T) -> u64 { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Node` is never constructed [INFO] [stderr] --> src/data_structures/custom_lru_cache.rs:17:12 [INFO] [stderr] | [INFO] [stderr] 17 | pub struct Node { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `CustomLruCache` is never constructed [INFO] [stderr] --> src/data_structures/custom_lru_cache.rs:26:12 [INFO] [stderr] | [INFO] [stderr] 26 | pub struct CustomLruCache { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/data_structures/custom_lru_cache.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 49 | impl CustomLruCache { [INFO] [stderr] | --------------------------------------------------------- associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 52 | pub fn new(capacity : usize) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 69 | pub fn get(&mut self, key : &K) -> Option<&V> { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 85 | pub fn get_mut(&mut self, key : &K) -> Option<&mut V> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 93 | pub fn insert(&mut self, key : K, value : V) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 145 | pub fn remove(&mut self, key : &K) -> Option { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 154 | pub fn clear(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 163 | pub fn len(&self) -> usize { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 168 | pub fn is_empty(&self) -> bool { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 176 | fn move_to_front(&mut self, node_idx : usize) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 213 | fn remove_node(&mut self, node_idx : usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 241 | fn evict_tail(&mut self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `retrieve_historical_terms` is never used [INFO] [stderr] --> src/api/course_finder.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | pub async fn retrieve_historical_terms() -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `get_course_list_by_department` is never used [INFO] [stderr] --> src/api/utils.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | pub async fn get_course_list_by_department(department_name : &str) -> Result, anyhow::Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `print_type_of` is never used [INFO] [stderr] --> src/api/utils.rs:20:8 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn print_type_of(_ : &T) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `save_to_file` is never used [INFO] [stderr] --> src/api/utils.rs:25:8 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn save_to_file(data: &serde_json::Value, filename: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `print_hashmap_keys` is never used [INFO] [stderr] --> src/api/utils.rs:34:8 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn print_hashmap_keys(hashmap_input : HashMap) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stderr] --> src/api/department.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stderr] --> src/api/course_finder.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stderr] [INFO] [stderr] warning: methods `get_mut` and `remove` are never used [INFO] [stderr] --> src/data_structures/custom_lru_cache.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 49 | impl CustomLruCache { [INFO] [stderr] | --------------------------------------------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 85 | pub fn get_mut(&mut self, key : &K) -> Option<&mut V> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 145 | pub fn remove(&mut self, key : &K) -> Option { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `ccny-course-catalog` (lib) generated 41 warnings (run `cargo fix --lib -p ccny-course-catalog` to apply 15 suggestions) [INFO] [stderr] warning: `ccny-course-catalog` (lib test) generated 33 warnings (32 duplicates) [INFO] [stderr] warning: unused import: `io::Write` [INFO] [stderr] --> src/main.rs:6:15 [INFO] [stderr] | [INFO] [stderr] 6 | use std::{fs, io::Write}; [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::ptr::null` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::ptr::null; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `closest_course_groupID` [INFO] [stderr] --> src/main.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [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:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `course_name_and_code_mapping` [INFO] [stderr] --> src/main.rs:117:9 [INFO] [stderr] | [INFO] [stderr] 117 | let course_name_and_code_mapping : BTreeMap = BTreeMap::new(); // this is where the mapping logic will be ... [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `complete_course_group_id` is never read [INFO] [stderr] --> src/main.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | let mut complete_course_group_id : 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: `effective_end_date_placeholder` [INFO] [stderr] --> src/main.rs:377:17 [INFO] [stderr] | [INFO] [stderr] 377 | ... let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:354:25 [INFO] [stderr] | [INFO] [stderr] 354 | let mut course_component_instance = CourseComponents { [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:399:17 [INFO] [stderr] | [INFO] [stderr] 399 | let mut course_info_instance = CourseInfo { [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `curr_dept` [INFO] [stderr] --> src/main.rs:450:17 [INFO] [stderr] | [INFO] [stderr] 450 | let mut curr_dept = String::from(department); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_dept` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:450:13 [INFO] [stderr] | [INFO] [stderr] 450 | let mut curr_dept = String::from(department); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/main.rs:540:14 [INFO] [stderr] | [INFO] [stderr] 540 | for (key,value) in hashmap_input.into_iter() { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/main.rs:551:14 [INFO] [stderr] | [INFO] [stderr] 551 | for (key,value) in department_mapping.into_iter() { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result_string` is never read [INFO] [stderr] --> src/main.rs:572:13 [INFO] [stderr] | [INFO] [stderr] 572 | let mut result_string : String = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: variable `closest_course_groupID` should have a snake case name [INFO] [stderr] --> src/main.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut closest_course_groupID = String::new(); // result will be stored here [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable `CourseInfoVector` should have a snake case name [INFO] [stderr] --> src/main.rs:310:13 [INFO] [stderr] | [INFO] [stderr] 310 | let mut CourseInfoVector : Vec = Vec::new(); // store results here [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `list_of_courses` [INFO] [stderr] --> src/bin/experimental.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | let mut list_of_courses = course_instance.get_courses_list().await; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_courses` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `course_info` [INFO] [stderr] --> src/bin/experimental.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | let mut course_info = course_instance.get_course_info().await; [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_info` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/experimental.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("algorithms"))); [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/bin/experimental.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let mut list_of_courses = course_instance.get_courses_list().await; [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/bin/experimental.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | let mut course_info = course_instance.get_course_info().await; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: `ccny-course-catalog` (bin "ccny-course-catalog" test) generated 17 warnings (run `cargo fix --bin "ccny-course-catalog" --tests` to apply 7 suggestions) [INFO] [stderr] warning: `ccny-course-catalog` (bin "experimental" test) generated 5 warnings (run `cargo fix --bin "experimental" --tests` to apply 3 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ccny_course_catalog-b30bea684ea66413) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test data_structures::custom_hashmap::test_can_get_item ... ok [INFO] [stdout] test data_structures::custom_lru_cache::tests::test_clear ... ok [INFO] [stdout] test data_structures::custom_lru_cache::tests::test_basic_operations ... ok [INFO] [stdout] test data_structures::custom_lru_cache::tests::test_update_existing ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ccny_course_catalog-3357f00fb6a42acb) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stderr] Running unittests src/bin/experimental.rs (/opt/rustwide/target/debug/deps/experimental-bd0605e1b29e1865) [INFO] [stdout] [INFO] [stderr] Doc-tests ccny_course_catalog [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [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] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test src/api/department.rs - api::department::fetch_courses_by_department (line 20) ... FAILED [INFO] [stdout] test src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_courses_list (line 44) ... FAILED [INFO] [stdout] test src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_department_list (line 316) ... FAILED [INFO] [stdout] test src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_course_info (line 168) ... FAILED [INFO] [stdout] test src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::set_department_name (line 327) ... FAILED [INFO] [stdout] test src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::new (line 19) ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- src/api/department.rs - api::department::fetch_courses_by_department (line 20) stdout ---- [INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks [INFO] [stdout] --> src/api/department.rs:21:63 [INFO] [stdout] | [INFO] [stdout] 2 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_api_department_rs_20_0() { [INFO] [stdout] | --------------------------------------------- this is not `async` [INFO] [stdout] 3 | let courses = fetch_courses_by_department("computer science").await?; [INFO] [stdout] | ^^^^^ only allowed inside `async` functions and blocks [INFO] [stdout] [INFO] [stdout] error[E0425]: cannot find function `fetch_courses_by_department` in this scope [INFO] [stdout] --> src/api/department.rs:21:15 [INFO] [stdout] | [INFO] [stdout] 3 | let courses = fetch_courses_by_department("computer science").await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0425, E0728. [INFO] [stdout] For more information about an error, try `rustc --explain E0425`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_courses_list (line 44) stdout ---- [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CCNYCourseCatalog` [INFO] [stdout] --> src/ccny_course_catalog.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 4 | let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("data structures"))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ use of undeclared type `CCNYCourseCatalog` [INFO] [stdout] | [INFO] [stdout] help: consider importing this struct [INFO] [stdout] | [INFO] [stdout] 2 + use ccny_course_catalog::CCNYCourseCatalog; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied [INFO] [stdout] --> src/ccny_course_catalog.rs:46:20 [INFO] [stdout] | [INFO] [stdout] 3 | async fn main() -> Result<()> { [INFO] [stdout] | ^^^^^^ -- supplied 1 generic argument [INFO] [stdout] | | [INFO] [stdout] | expected 2 generic arguments [INFO] [stdout] | [INFO] [stdout] help: add missing generic argument [INFO] [stdout] | [INFO] [stdout] 3 | async fn main() -> Result<(), E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0107, E0433. [INFO] [stdout] For more information about an error, try `rustc --explain E0107`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_department_list (line 316) stdout ---- [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CCNYCourseCatalog` [INFO] [stdout] --> src/ccny_course_catalog.rs:319:23 [INFO] [stdout] | [INFO] [stdout] 5 | let department_list = CCNYCourseCatalog::get_department_list(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ use of undeclared type `CCNYCourseCatalog` [INFO] [stdout] | [INFO] [stdout] help: consider importing this struct [INFO] [stdout] | [INFO] [stdout] 2 + use ccny_course_catalog::CCNYCourseCatalog; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error: aborting due to 1 previous error [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0433`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_course_info (line 168) stdout ---- [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CCNYCourseCatalog` [INFO] [stdout] --> src/ccny_course_catalog.rs:171:31 [INFO] [stdout] | [INFO] [stdout] 4 | let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("data structures"))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ use of undeclared type `CCNYCourseCatalog` [INFO] [stdout] | [INFO] [stdout] help: consider importing this struct [INFO] [stdout] | [INFO] [stdout] 2 + use ccny_course_catalog::CCNYCourseCatalog; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied [INFO] [stdout] --> src/ccny_course_catalog.rs:170:20 [INFO] [stdout] | [INFO] [stdout] 3 | async fn main() -> Result<()> { [INFO] [stdout] | ^^^^^^ -- supplied 1 generic argument [INFO] [stdout] | | [INFO] [stdout] | expected 2 generic arguments [INFO] [stdout] | [INFO] [stdout] help: add missing generic argument [INFO] [stdout] | [INFO] [stdout] 3 | async fn main() -> Result<(), E> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0107, E0433. [INFO] [stdout] For more information about an error, try `rustc --explain E0107`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::set_department_name (line 327) stdout ---- [INFO] [stdout] error[E0425]: cannot find value `course_instance` in this scope [INFO] [stdout] --> src/ccny_course_catalog.rs:328:1 [INFO] [stdout] | [INFO] [stdout] 3 | course_instance.set_department_name("electrical engineering"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] error[E0425]: cannot find value `course_instance` in this scope [INFO] [stdout] --> src/ccny_course_catalog.rs:329:1 [INFO] [stdout] | [INFO] [stdout] 4 | course_instance.set_course_name("statistics"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0425`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] src/api/department.rs - api::department::fetch_courses_by_department (line 20) [INFO] [stdout] src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_course_info (line 168) [INFO] [stdout] src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_courses_list (line 44) [INFO] [stdout] src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::get_department_list (line 316) [INFO] [stdout] src/ccny_course_catalog.rs - ccny_course_catalog::CCNYCourseCatalog::set_department_name (line 327) [INFO] [stdout] [INFO] [stdout] test result: FAILED. 1 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.99s [INFO] [stdout] [INFO] [stderr] error: doctest failed, to rerun pass `--doc` [INFO] running `Command { std: "docker" "inspect" "142ace9b8ca4c32b29c93ce6f7cb6402b608a6e5973b0659c855599942507c3d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "142ace9b8ca4c32b29c93ce6f7cb6402b608a6e5973b0659c855599942507c3d", kill_on_drop: false }` [INFO] [stdout] 142ace9b8ca4c32b29c93ce6f7cb6402b608a6e5973b0659c855599942507c3d