[INFO] cloning repository https://github.com/LanHikari22/time-task-manager [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/LanHikari22/time-task-manager" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLanHikari22%2Ftime-task-manager", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLanHikari22%2Ftime-task-manager'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4ea4973411c91f8d97c162f0b87e9dd3aa0ad213 [INFO] linting LanHikari22/time-task-manager against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLanHikari22%2Ftime-task-manager" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/LanHikari22/time-task-manager [INFO] finished tweaking git repo https://github.com/LanHikari22/time-task-manager [INFO] tweaked toml for git repo https://github.com/LanHikari22/time-task-manager written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/LanHikari22/time-task-manager on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/LanHikari22/time-task-manager already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded unindent v0.1.7 [INFO] [stderr] Downloaded indoc v1.0.3 [INFO] [stderr] Downloaded itertools v0.10.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b9d1de05609b01e6ffe8732a22aa343700476dcc43d392bec278341bd611b4a7 [INFO] running `Command { std: "docker" "start" "-a" "b9d1de05609b01e6ffe8732a22aa343700476dcc43d392bec278341bd611b4a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b9d1de05609b01e6ffe8732a22aa343700476dcc43d392bec278341bd611b4a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b9d1de05609b01e6ffe8732a22aa343700476dcc43d392bec278341bd611b4a7", kill_on_drop: false }` [INFO] [stdout] b9d1de05609b01e6ffe8732a22aa343700476dcc43d392bec278341bd611b4a7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 00ed358ce24282be0e47fb47f05746298dab465e7ccebf381eecdf50e2fc7529 [INFO] running `Command { std: "docker" "start" "-a" "00ed358ce24282be0e47fb47f05746298dab465e7ccebf381eecdf50e2fc7529", kill_on_drop: false }` [INFO] [stderr] Compiling unindent v0.1.7 [INFO] [stderr] Checking regex-syntax v0.6.21 [INFO] [stderr] Checking itertools v0.10.0 [INFO] [stderr] Compiling indoc v1.0.3 [INFO] [stderr] Checking regex v1.4.2 [INFO] [stderr] Checking ttm v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/utils/scanner.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | / /// assert_eq!(scanner.next_word(), Err(())); [INFO] [stdout] 97 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn next_word(&mut self) -> Result { [INFO] [stdout] | ---------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 97 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/utils/scanner.rs:188:15 [INFO] [stdout] | [INFO] [stdout] 188 | Self {stream: stream, cur: 0} [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/ttm_io/task.rs:377:6 [INFO] [stdout] | [INFO] [stdout] 377 | }; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/utils/scanner.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | / /// assert_eq!(scanner.next_word(), Err(())); [INFO] [stdout] 97 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn next_word(&mut self) -> Result { [INFO] [stdout] | ---------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 97 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/utils/scanner.rs:188:15 [INFO] [stdout] | [INFO] [stdout] 188 | Self {stream: stream, cur: 0} [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/ttm_io/task.rs:377:6 [INFO] [stdout] | [INFO] [stdout] 377 | }; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BlockTrackerEntry` is never constructed [INFO] [stdout] --> src/ttm_io/block_tracker.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct BlockTrackerEntry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BlockTrackerEntryParseError` is never used [INFO] [stdout] --> src/ttm_io/block_tracker.rs:24:10 [INFO] [stdout] | [INFO] [stdout] 24 | pub enum BlockTrackerEntryParseError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/utils/common.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | v.iter().any(|&el| self.0 == el) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `v.contains(&self.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/utils/common.rs:131:16 [INFO] [stdout] | [INFO] [stdout] 131 | return chars.iter().any(|&el| self.0 == el); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `chars.contains(&self.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.1` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/common.rs:145:47 [INFO] [stdout] | [INFO] [stdout] 145 | let c1 = if self.1.is_some() {self.1.unwrap()} else {self.0.next()?}; [INFO] [stdout] | ------------------- ^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: try: `if let Some() = self.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `c2_res` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/common.rs:151:24 [INFO] [stdout] | [INFO] [stdout] 150 | if c2_res.is_some() { [INFO] [stdout] | ------------------- help: try: `if let Some() = c2_res` [INFO] [stdout] 151 | if c2_res.unwrap() == '-' { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `c2_res` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/common.rs:156:39 [INFO] [stdout] | [INFO] [stdout] 150 | if c2_res.is_some() { [INFO] [stdout] | ------------------- help: try: `if let Some() = c2_res` [INFO] [stdout] ... [INFO] [stdout] 156 | self.1 = Some(c2_res.unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/common.rs:162:17 [INFO] [stdout] | [INFO] [stdout] 162 | return Some(Token::Match(c1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 162 - return Some(Token::Match(c1)); [INFO] [stdout] 162 + Some(Token::Match(c1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/common.rs:172:1 [INFO] [stdout] | [INFO] [stdout] 172 | pub fn result_err_to_unit(res: Result) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/common.rs:174:20 [INFO] [stdout] | [INFO] [stdout] 174 | Ok(res) => return Ok(res), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 174 - Ok(res) => return Ok(res), [INFO] [stdout] 174 + Ok(res) => Ok(res), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/common.rs:180:1 [INFO] [stdout] | [INFO] [stdout] 180 | pub fn parse_integer_auto(s: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:185:56 [INFO] [stdout] | [INFO] [stdout] 185 | _ if s.starts_with("0x") => result_err_to_unit(i32::from_str_radix(&s[2..], 16).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s[2..], 16).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:186:56 [INFO] [stdout] | [INFO] [stdout] 186 | _ if s.starts_with("0o") => result_err_to_unit(i32::from_str_radix(&s[2..], 8).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s[2..], 8).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:187:56 [INFO] [stdout] | [INFO] [stdout] 187 | _ if s.starts_with("0b") => result_err_to_unit(i32::from_str_radix(&s[2..], 2).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s[2..], 2).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:188:78 [INFO] [stdout] | [INFO] [stdout] 188 | _ if StrUtils(&s).contains_any("ABCDEFabcdef") => result_err_to_unit(i32::from_str_radix(&s, 16).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s, 16).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:189:33 [INFO] [stdout] | [INFO] [stdout] 189 | _ => result_err_to_unit(s.parse::().and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `s.parse::().map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `next` can be confused for the standard trait method `std::iter::Iterator::next` [INFO] [stdout] --> src/utils/scanner.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn next(&mut self) -> Result { [INFO] [stdout] 35 | | let (len, elem) = self.peek::()?; [INFO] [stdout] 36 | | self.advance(len); [INFO] [stdout] 37 | | Ok(elem) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::iter::Iterator` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn peek_token(&mut self, end: fn(&str) -> Option) -> Result<(usize, String, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `token_len` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/scanner.rs:47:69 [INFO] [stdout] | [INFO] [stdout] 45 | if token_len.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = token_len` [INFO] [stdout] 46 | let token = &self.stream[self.cur..self.cur + i]; [INFO] [stdout] 47 | let sep = &self.stream[self.cur + i..self.cur + i + token_len.unwrap()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `token_len` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/scanner.rs:48:30 [INFO] [stdout] | [INFO] [stdout] 45 | if token_len.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = token_len` [INFO] [stdout] ... [INFO] [stdout] 48 | return Ok((i+token_len.unwrap(), token.into(), sep.into())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/utils/scanner.rs:43:23 [INFO] [stdout] | [INFO] [stdout] 43 | for (i, _) in (&self.stream[self.cur..]).char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.stream[self.cur..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/utils/scanner.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | /// and its length [INFO] [stdout] | ^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn next_token(&mut self, end: fn(&str) -> Option) -> Result<(String, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn peek_word(&mut self) -> Result<(usize, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/utils/scanner.rs:79:23 [INFO] [stdout] | [INFO] [stdout] 79 | for (i, c) in (&self.stream[self.cur..]).char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.stream[self.cur..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn next_word(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | pub fn peek_line(&mut self) -> Result<(usize, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn next_line(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | pub fn peek_char(&mut self) -> Result<(usize, char), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 130 | pub fn next_char(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:137:5 [INFO] [stdout] | [INFO] [stdout] 137 | pub fn peek_int(&mut self) -> Result<(usize, i32), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 172 | pub fn next_int(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | pub fn match_next(&mut self, exp: &str) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/utils/scanner.rs:180:12 [INFO] [stdout] | [INFO] [stdout] 180 | if (&self.stream[self.cur..]).starts_with(exp) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.stream[self.cur..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/common_regex.rs:28:51 [INFO] [stdout] | [INFO] [stdout] 28 | pub static ref INTEGER_RE: Regex = Regex::new(&INTEGER).unwrap(); [INFO] [stdout] | ^^^^^^^^ help: change this to: `INTEGER` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this manual char comparison can be written more succinctly [INFO] [stdout] --> src/ttm_io/regex_utils.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | for scope_token in regex.split(|c| c == '(') { [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using a `char`: `'('` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_pattern_char_comparison [INFO] [stdout] = note: `#[warn(clippy::manual_pattern_char_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/ttm_io/regex_utils.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 41 | let out = common::parse_integer_auto(out).unwrap(); [INFO] [stdout] | --------------------------------------------------- unnecessary `let` binding [INFO] [stdout] 42 | [INFO] [stdout] 43 | out [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 41 ~ [INFO] [stdout] 42 | [INFO] [stdout] 43 ~ common::parse_integer_auto(out).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `act_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:90:49 [INFO] [stdout] | [INFO] [stdout] 89 | let act = if act_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = act_cap` [INFO] [stdout] 90 | Some(common::parse_integer_auto(act_cap.unwrap()).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `exp_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:95:49 [INFO] [stdout] | [INFO] [stdout] 94 | let exp = if exp_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = exp_cap` [INFO] [stdout] 95 | Some(common::parse_integer_auto(exp_cap.unwrap()).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `act_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:112:35 [INFO] [stdout] | [INFO] [stdout] 111 | let act = if act_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = act_cap` [INFO] [stdout] 112 | parse_custom_bool(act_cap.unwrap()).unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `exp_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:117:35 [INFO] [stdout] | [INFO] [stdout] 116 | let exp = if exp_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = exp_cap` [INFO] [stdout] 117 | parse_custom_bool(exp_cap.unwrap()).unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:134:55 [INFO] [stdout] | [INFO] [stdout] 134 | Self::InvalidPrefixDescriptor(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] = note: `#[warn(clippy::suspicious_to_owned)]` on by default [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 134 | Self::InvalidPrefixDescriptor(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 134 - Self::InvalidPrefixDescriptor(message) => message.to_owned(), [INFO] [stdout] 134 + Self::InvalidPrefixDescriptor(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:135:55 [INFO] [stdout] | [INFO] [stdout] 135 | Self::InvalidSuffixDescriptor(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 135 | Self::InvalidSuffixDescriptor(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 135 - Self::InvalidSuffixDescriptor(message) => message.to_owned(), [INFO] [stdout] 135 + Self::InvalidSuffixDescriptor(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:136:48 [INFO] [stdout] | [INFO] [stdout] 136 | Self::InvalidTaskFlags(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 136 | Self::InvalidTaskFlags(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 136 - Self::InvalidTaskFlags(message) => message.to_owned(), [INFO] [stdout] 136 + Self::InvalidTaskFlags(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:137:48 [INFO] [stdout] | [INFO] [stdout] 137 | Self::InvalidGoalStats(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 137 | Self::InvalidGoalStats(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 137 - Self::InvalidGoalStats(message) => message.to_owned(), [INFO] [stdout] 137 + Self::InvalidGoalStats(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ttm_io/task.rs:266:12 [INFO] [stdout] | [INFO] [stdout] 266 | if !(idx_suffix_open_paren.is_some() && idx_suffix_close_paren.is_some()) [INFO] [stdout] | ____________^ [INFO] [stdout] 267 | | && !(idx_suffix_open_paren.is_none() && idx_suffix_close_paren.is_none()) [INFO] [stdout] | |_____________________________________________________________________________________^ help: try: `!(idx_suffix_open_paren.is_some() && idx_suffix_close_paren.is_some() || idx_suffix_open_paren.is_none() && idx_suffix_close_paren.is_none())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `idx_suffix_open_paren` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/task.rs:303:34 [INFO] [stdout] | [INFO] [stdout] 302 | if idx_suffix_open_paren.is_some() { [INFO] [stdout] | ---------------------------------- help: try: `if let Some() = idx_suffix_open_paren` [INFO] [stdout] 303 | let idx_open_paren = idx_suffix_open_paren.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:260:36 [INFO] [stdout] | [INFO] [stdout] 260 | let s_after_prefix: &str = &s[idx_prefix_closed_paren + 1..].trim(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `s[idx_prefix_closed_paren + 1..].trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:277:26 [INFO] [stdout] | [INFO] [stdout] 277 | Some(idx) => &s_after_prefix[..idx].trim(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `s_after_prefix[..idx].trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:285:43 [INFO] [stdout] | [INFO] [stdout] 285 | let task_flags: TaskFlags = match (&s[..idx_prefix_open_paren]).parse() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `s[..idx_prefix_open_paren]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/ttm_io/task.rs:314:20 [INFO] [stdout] | [INFO] [stdout] 314 | if idx_colon == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `idx_colon.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ttm_io/task.rs:316:24 [INFO] [stdout] | [INFO] [stdout] 316 | if field == "" { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `field.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/ttm_io/task.rs:322:41 [INFO] [stdout] | [INFO] [stdout] 322 | res.note_link = (&field[1..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/ttm_io/task.rs:320:21 [INFO] [stdout] | [INFO] [stdout] 320 | if field.starts_with('*') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 320 ~ if let Some() = field.strip_prefix('*') { [INFO] [stdout] 321 | // parse note link, skip '*' [INFO] [stdout] 322 ~ res.note_link = .to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:322:41 [INFO] [stdout] | [INFO] [stdout] 322 | res.note_link = (&field[1..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `field[1..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:326:31 [INFO] [stdout] | [INFO] [stdout] 326 | let key = (&field[..idx_colon.unwrap()]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `field[..idx_colon.unwrap()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:327:31 [INFO] [stdout] | [INFO] [stdout] 327 | let val = (&field[idx_colon.unwrap() + 1..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `field[idx_colon.unwrap() + 1..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/ttm_io/task.rs:354:48 [INFO] [stdout] | [INFO] [stdout] 354 | res.other_stats.insert(key[1..].to_owned(), other_stats); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/ttm_io/task.rs:347:28 [INFO] [stdout] | [INFO] [stdout] 347 | } else if key.starts_with("g") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 347 ~ } else if let Some() = key.strip_prefix("g") { [INFO] [stdout] 348 | let other_stats = match parse_stat_tuple(&val.trim()) { [INFO] [stdout] ... [INFO] [stdout] 353 | // add to hash map, discard 'g' from key [INFO] [stdout] 354 ~ res.other_stats.insert(.to_owned(), other_stats); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:348:66 [INFO] [stdout] | [INFO] [stdout] 348 | let other_stats = match parse_stat_tuple(&val.trim()) { [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `val.trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ttm_io/task.rs:442:12 [INFO] [stdout] | [INFO] [stdout] 442 | if token == "" { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `token.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:50:16 [INFO] [stdout] | [INFO] [stdout] 50 | "M" => return Ok(Season::Summer), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 50 - "M" => return Ok(Season::Summer), [INFO] [stdout] 50 + "M" => Ok(Season::Summer), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:51:16 [INFO] [stdout] | [INFO] [stdout] 51 | "F" => return Ok(Season::Fall), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 51 - "F" => return Ok(Season::Fall), [INFO] [stdout] 51 + "F" => Ok(Season::Fall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:52:16 [INFO] [stdout] | [INFO] [stdout] 52 | "W" => return Ok(Season::Winter), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 52 - "W" => return Ok(Season::Winter), [INFO] [stdout] 52 + "W" => Ok(Season::Winter), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:53:16 [INFO] [stdout] | [INFO] [stdout] 53 | "S" => return Ok(Season::Spring), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 - "S" => return Ok(Season::Spring), [INFO] [stdout] 53 + "S" => Ok(Season::Spring), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:54:14 [INFO] [stdout] | [INFO] [stdout] 54 | _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 54 - _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] 54 + _ => Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:69:40 [INFO] [stdout] | [INFO] [stdout] 69 | "M" | "Mon" | "Monday" => return Ok(Weekday::Mon), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 69 - "M" | "Mon" | "Monday" => return Ok(Weekday::Mon), [INFO] [stdout] 69 + "M" | "Mon" | "Monday" => Ok(Weekday::Mon), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:70:40 [INFO] [stdout] | [INFO] [stdout] 70 | "T" | "Tue" | "Tuesday" => return Ok(Weekday::Tue), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 70 - "T" | "Tue" | "Tuesday" => return Ok(Weekday::Tue), [INFO] [stdout] 70 + "T" | "Tue" | "Tuesday" => Ok(Weekday::Tue), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:71:40 [INFO] [stdout] | [INFO] [stdout] 71 | "W" | "Wed" | "Wednesday" => return Ok(Weekday::Wed), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 71 - "W" | "Wed" | "Wednesday" => return Ok(Weekday::Wed), [INFO] [stdout] 71 + "W" | "Wed" | "Wednesday" => Ok(Weekday::Wed), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:72:40 [INFO] [stdout] | [INFO] [stdout] 72 | "R" | "Thu" | "Thursday" => return Ok(Weekday::Thu), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 72 - "R" | "Thu" | "Thursday" => return Ok(Weekday::Thu), [INFO] [stdout] 72 + "R" | "Thu" | "Thursday" => Ok(Weekday::Thu), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:73:40 [INFO] [stdout] | [INFO] [stdout] 73 | "F" | "Fri" | "Friday" => return Ok(Weekday::Fri), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 73 - "F" | "Fri" | "Friday" => return Ok(Weekday::Fri), [INFO] [stdout] 73 + "F" | "Fri" | "Friday" => Ok(Weekday::Fri), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:74:40 [INFO] [stdout] | [INFO] [stdout] 74 | "S" | "Sat" | "Saturday" => return Ok(Weekday::Sat), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 74 - "S" | "Sat" | "Saturday" => return Ok(Weekday::Sat), [INFO] [stdout] 74 + "S" | "Sat" | "Saturday" => Ok(Weekday::Sat), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:75:40 [INFO] [stdout] | [INFO] [stdout] 75 | "U" | "Sun" | "Sunday" => return Ok(Weekday::Sun), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 75 - "U" | "Sun" | "Sunday" => return Ok(Weekday::Sun), [INFO] [stdout] 75 + "U" | "Sun" | "Sunday" => Ok(Weekday::Sun), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 76 | _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 76 - _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] 76 + _ => Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/ttm_io/date.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | DateCode {year: u32, season: Season, week: u32, day: Weekday}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `DateCode` [INFO] [stdout] --> src/ttm_io/date.rs:82:1 [INFO] [stdout] | [INFO] [stdout] 82 | / pub enum Date { [INFO] [stdout] 83 | | DateCode {year: u32, season: Season, week: u32, day: Weekday}, [INFO] [stdout] 84 | | WeekDateCode {year: u32, season: Season, week: u32}, [INFO] [stdout] 85 | | ShortDateCode {week: u32, day: Weekday}, [INFO] [stdout] 86 | | ShortWeekDateCode {week: u32}, [INFO] [stdout] 87 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:99:13 [INFO] [stdout] | [INFO] [stdout] 99 | / return Ok(Date::ShortDateCode { [INFO] [stdout] 100 | | week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 101 | | day: regex_utils::capture_parse(&cap, "Day")}); [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 99 ~ Ok(Date::ShortDateCode { [INFO] [stdout] 100 + week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 101 ~ day: regex_utils::capture_parse(&cap, "Day")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | / return Ok(Date::ShortWeekDateCode { [INFO] [stdout] 105 | | week: regex_utils::capture_parse_u32(&cap, "Week")}); [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 104 ~ Ok(Date::ShortWeekDateCode { [INFO] [stdout] 105 ~ week: regex_utils::capture_parse_u32(&cap, "Week")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | / return Ok(Date::DateCode { [INFO] [stdout] 109 | | year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 110 | | season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 111 | | week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 112 | | day: regex_utils::capture_parse(&cap, "Day")}); [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 108 ~ Ok(Date::DateCode { [INFO] [stdout] 109 + year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 110 + season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 111 + week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 112 ~ day: regex_utils::capture_parse(&cap, "Day")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:115:13 [INFO] [stdout] | [INFO] [stdout] 115 | / return Ok(Date::WeekDateCode { [INFO] [stdout] 116 | | year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 117 | | season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 118 | | week: regex_utils::capture_parse_u32(&cap, "Week")}); [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 115 ~ Ok(Date::WeekDateCode { [INFO] [stdout] 116 + year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 117 + season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 118 ~ week: regex_utils::capture_parse_u32(&cap, "Week")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:120:15 [INFO] [stdout] | [INFO] [stdout] 120 | else {return Err(format!("could not parse {} as a DateCode", s).into());} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 120 - else {return Err(format!("could not parse {} as a DateCode", s).into());} [INFO] [stdout] 120 + else {Err(format!("could not parse {} as a DateCode", s).into())} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/section.rs:41:39 [INFO] [stdout] | [INFO] [stdout] 41 | Self::Generic(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 41 | Self::Generic(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 41 - Self::Generic(message) => message.to_owned(), [INFO] [stdout] 41 + Self::Generic(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ttm_io/section.rs:56:25 [INFO] [stdout] | [INFO] [stdout] 56 | let _line_idx = s.find("\n").or_else(|| Some(s.len())).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `or` instead [INFO] [stdout] | [INFO] [stdout] 56 - let _line_idx = s.find("\n").or_else(|| Some(s.len())).unwrap(); [INFO] [stdout] 56 + let _line_idx = s.find("\n").or(Some(s.len())).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/ttm_io/section.rs:59:30 [INFO] [stdout] | [INFO] [stdout] 59 | let specifier_line = scan [INFO] [stdout] | ______________________________^ [INFO] [stdout] 60 | | .next_line() [INFO] [stdout] 61 | | .or_else(|_e| Err(SectionParseError::Generic(specifier_line_error_msg.into())))?; [INFO] [stdout] | |___________________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 59 ~ let specifier_line = scan [INFO] [stdout] 60 ~ .next_line().map_err(|_e| SectionParseError::Generic(specifier_line_error_msg.into()))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/ttm_io/regex_utils.rs:16:28 [INFO] [stdout] | [INFO] [stdout] 16 | out_regex.push(vec![&scope_token[..capture_name_start_idx], &scope_token[capture_name_end_idx+1..]].join("")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[&scope_token[..capture_name_start_idx], &scope_token[capture_name_end_idx+1..]]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/utils/test.rs:19:26 [INFO] [stdout] | [INFO] [stdout] 19 | Err(e) => panic!(format!( [INFO] [stdout] | __________________________^ [INFO] [stdout] 20 | | "\nExpected \"{}\" to parse but got {}: \"{}\"\n", [INFO] [stdout] 21 | | s, std::any::type_name::(), E::from(e))), [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 19 ~ Err(e) => panic!( [INFO] [stdout] 20 | "\nExpected \"{}\" to parse but got {}: \"{}\"\n", [INFO] [stdout] 21 ~ s, std::any::type_name::(), E::from(e)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/ttm_io/task.rs:220:20 [INFO] [stdout] | [INFO] [stdout] 220 | panic!(format!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 221 | | "Task Priority cannot exceed max value of {}", [INFO] [stdout] 222 | | Task::NO_PRIORITY [INFO] [stdout] 223 | | )); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 220 ~ panic!( [INFO] [stdout] 221 | "Task Priority cannot exceed max value of {}", [INFO] [stdout] 222 | Task::NO_PRIORITY [INFO] [stdout] 223 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/ttm_io/block_tracker.rs:25:21 [INFO] [stdout] | [INFO] [stdout] 25 | StatParseError (usize), [INFO] [stdout] | -------------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `BlockTrackerEntryParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 25 - StatParseError (usize), [INFO] [stdout] 25 + StatParseError (()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/utils/common.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | v.iter().any(|&el| self.0 == el) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `v.contains(&self.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/utils/common.rs:131:16 [INFO] [stdout] | [INFO] [stdout] 131 | return chars.iter().any(|&el| self.0 == el); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `chars.contains(&self.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.1` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/common.rs:145:47 [INFO] [stdout] | [INFO] [stdout] 145 | let c1 = if self.1.is_some() {self.1.unwrap()} else {self.0.next()?}; [INFO] [stdout] | ------------------- ^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: try: `if let Some() = self.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `c2_res` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/common.rs:151:24 [INFO] [stdout] | [INFO] [stdout] 150 | if c2_res.is_some() { [INFO] [stdout] | ------------------- help: try: `if let Some() = c2_res` [INFO] [stdout] 151 | if c2_res.unwrap() == '-' { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `c2_res` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/common.rs:156:39 [INFO] [stdout] | [INFO] [stdout] 150 | if c2_res.is_some() { [INFO] [stdout] | ------------------- help: try: `if let Some() = c2_res` [INFO] [stdout] ... [INFO] [stdout] 156 | self.1 = Some(c2_res.unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/common.rs:162:17 [INFO] [stdout] | [INFO] [stdout] 162 | return Some(Token::Match(c1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 162 - return Some(Token::Match(c1)); [INFO] [stdout] 162 + Some(Token::Match(c1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/common.rs:172:1 [INFO] [stdout] | [INFO] [stdout] 172 | pub fn result_err_to_unit(res: Result) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/common.rs:174:20 [INFO] [stdout] | [INFO] [stdout] 174 | Ok(res) => return Ok(res), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 174 - Ok(res) => return Ok(res), [INFO] [stdout] 174 + Ok(res) => Ok(res), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/common.rs:180:1 [INFO] [stdout] | [INFO] [stdout] 180 | pub fn parse_integer_auto(s: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:185:56 [INFO] [stdout] | [INFO] [stdout] 185 | _ if s.starts_with("0x") => result_err_to_unit(i32::from_str_radix(&s[2..], 16).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s[2..], 16).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:186:56 [INFO] [stdout] | [INFO] [stdout] 186 | _ if s.starts_with("0o") => result_err_to_unit(i32::from_str_radix(&s[2..], 8).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s[2..], 8).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:187:56 [INFO] [stdout] | [INFO] [stdout] 187 | _ if s.starts_with("0b") => result_err_to_unit(i32::from_str_radix(&s[2..], 2).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s[2..], 2).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:188:78 [INFO] [stdout] | [INFO] [stdout] 188 | _ if StrUtils(&s).contains_any("ABCDEFabcdef") => result_err_to_unit(i32::from_str_radix(&s, 16).and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from_str_radix(&s, 16).map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/utils/common.rs:189:33 [INFO] [stdout] | [INFO] [stdout] 189 | _ => result_err_to_unit(s.parse::().and_then(|i| Ok(neg * i))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `s.parse::().map(|i| neg * i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:325:9 [INFO] [stdout] | [INFO] [stdout] 325 | assert_eq!(StrUtils("0xDeadFeed").contains_any("ABCDEFabcdef"), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 325 - assert_eq!(StrUtils("0xDeadFeed").contains_any("ABCDEFabcdef"), true); [INFO] [stdout] 325 + assert!(StrUtils("0xDeadFeed").contains_any("ABCDEFabcdef")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:326:9 [INFO] [stdout] | [INFO] [stdout] 326 | assert_eq!(StrUtils("456").contains_any("123"), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 326 - assert_eq!(StrUtils("456").contains_any("123"), false); [INFO] [stdout] 326 + assert!(!StrUtils("456").contains_any("123")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | assert_eq!(StrUtils("[ContainsBrackets]").contains_all("[]"), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 331 - assert_eq!(StrUtils("[ContainsBrackets]").contains_all("[]"), true); [INFO] [stdout] 331 + assert!(StrUtils("[ContainsBrackets]").contains_all("[]")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:332:9 [INFO] [stdout] | [INFO] [stdout] 332 | assert_eq!(StrUtils("[01]").contains_all("01"), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 332 - assert_eq!(StrUtils("[01]").contains_all("01"), true); [INFO] [stdout] 332 + assert!(StrUtils("[01]").contains_all("01")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | assert_eq!(StrUtils("[1]").contains_all("01"), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 333 - assert_eq!(StrUtils("[1]").contains_all("01"), false); [INFO] [stdout] 333 + assert!(!StrUtils("[1]").contains_all("01")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:337:9 [INFO] [stdout] | [INFO] [stdout] 337 | assert_eq!(StrUtils("OK").in_any(&vec!["OK", "PASS"]), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 337 - assert_eq!(StrUtils("OK").in_any(&vec!["OK", "PASS"]), true); [INFO] [stdout] 337 + assert!(StrUtils("OK").in_any(&vec!["OK", "PASS"])); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | assert_eq!(StrUtils("NO").in_any(&vec!["OK", "PASS"]), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 338 - assert_eq!(StrUtils("NO").in_any(&vec!["OK", "PASS"]), false); [INFO] [stdout] 338 + assert!(!StrUtils("NO").in_any(&vec!["OK", "PASS"])); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 352 | assert_eq!(CharUtils('1').is_in("0-9"), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 352 - assert_eq!(CharUtils('1').is_in("0-9"), true); [INFO] [stdout] 352 + assert!(CharUtils('1').is_in("0-9")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:353:9 [INFO] [stdout] | [INFO] [stdout] 353 | assert_eq!(CharUtils('a').is_in("0-9"), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 353 - assert_eq!(CharUtils('a').is_in("0-9"), false); [INFO] [stdout] 353 + assert!(!CharUtils('a').is_in("0-9")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:354:9 [INFO] [stdout] | [INFO] [stdout] 354 | assert_eq!(CharUtils('a').is_in("0-9a"), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 354 - assert_eq!(CharUtils('a').is_in("0-9a"), true); [INFO] [stdout] 354 + assert!(CharUtils('a').is_in("0-9a")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:355:9 [INFO] [stdout] | [INFO] [stdout] 355 | assert_eq!(CharUtils('c').is_in("abd-z"), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 355 - assert_eq!(CharUtils('c').is_in("abd-z"), false); [INFO] [stdout] 355 + assert!(!CharUtils('c').is_in("abd-z")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/utils/common.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | assert_eq!(CharUtils('e').is_in("01-9abd-z"), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 356 - assert_eq!(CharUtils('e').is_in("01-9abd-z"), true); [INFO] [stdout] 356 + assert!(CharUtils('e').is_in("01-9abd-z")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `next` can be confused for the standard trait method `std::iter::Iterator::next` [INFO] [stdout] --> src/utils/scanner.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn next(&mut self) -> Result { [INFO] [stdout] 35 | | let (len, elem) = self.peek::()?; [INFO] [stdout] 36 | | self.advance(len); [INFO] [stdout] 37 | | Ok(elem) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::iter::Iterator` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn peek_token(&mut self, end: fn(&str) -> Option) -> Result<(usize, String, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `token_len` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/scanner.rs:47:69 [INFO] [stdout] | [INFO] [stdout] 45 | if token_len.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = token_len` [INFO] [stdout] 46 | let token = &self.stream[self.cur..self.cur + i]; [INFO] [stdout] 47 | let sep = &self.stream[self.cur + i..self.cur + i + token_len.unwrap()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `token_len` after checking its variant with `is_some` [INFO] [stdout] --> src/utils/scanner.rs:48:30 [INFO] [stdout] | [INFO] [stdout] 45 | if token_len.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = token_len` [INFO] [stdout] ... [INFO] [stdout] 48 | return Ok((i+token_len.unwrap(), token.into(), sep.into())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/utils/scanner.rs:43:23 [INFO] [stdout] | [INFO] [stdout] 43 | for (i, _) in (&self.stream[self.cur..]).char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.stream[self.cur..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/utils/scanner.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | /// and its length [INFO] [stdout] | ^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn next_token(&mut self, end: fn(&str) -> Option) -> Result<(String, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn peek_word(&mut self) -> Result<(usize, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/utils/scanner.rs:79:23 [INFO] [stdout] | [INFO] [stdout] 79 | for (i, c) in (&self.stream[self.cur..]).char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.stream[self.cur..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn next_word(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | pub fn peek_line(&mut self) -> Result<(usize, String), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn next_line(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | pub fn peek_char(&mut self) -> Result<(usize, char), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 130 | pub fn next_char(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:137:5 [INFO] [stdout] | [INFO] [stdout] 137 | pub fn peek_int(&mut self) -> Result<(usize, i32), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 172 | pub fn next_int(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/utils/scanner.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | pub fn match_next(&mut self, exp: &str) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/utils/scanner.rs:180:12 [INFO] [stdout] | [INFO] [stdout] 180 | if (&self.stream[self.cur..]).starts_with(exp) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.stream[self.cur..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/common_regex.rs:28:51 [INFO] [stdout] | [INFO] [stdout] 28 | pub static ref INTEGER_RE: Regex = Regex::new(&INTEGER).unwrap(); [INFO] [stdout] | ^^^^^^^^ help: change this to: `INTEGER` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this manual char comparison can be written more succinctly [INFO] [stdout] --> src/ttm_io/regex_utils.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | for scope_token in regex.split(|c| c == '(') { [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using a `char`: `'('` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_pattern_char_comparison [INFO] [stdout] = note: `#[warn(clippy::manual_pattern_char_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/ttm_io/regex_utils.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 41 | let out = common::parse_integer_auto(out).unwrap(); [INFO] [stdout] | --------------------------------------------------- unnecessary `let` binding [INFO] [stdout] 42 | [INFO] [stdout] 43 | out [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 41 ~ [INFO] [stdout] 42 | [INFO] [stdout] 43 ~ common::parse_integer_auto(out).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/ttm_io/block_tracker.rs:85:13 [INFO] [stdout] | [INFO] [stdout] 85 | / s.parse::() [INFO] [stdout] 86 | | .and_then(|res| {assert_eq!(res, exp); Ok(res)}) [INFO] [stdout] | |________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 86 - .and_then(|res| {assert_eq!(res, exp); Ok(res)}) [INFO] [stdout] 86 + .map(|res| {assert_eq!(res, exp); res}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `act_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:90:49 [INFO] [stdout] | [INFO] [stdout] 89 | let act = if act_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = act_cap` [INFO] [stdout] 90 | Some(common::parse_integer_auto(act_cap.unwrap()).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `exp_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:95:49 [INFO] [stdout] | [INFO] [stdout] 94 | let exp = if exp_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = exp_cap` [INFO] [stdout] 95 | Some(common::parse_integer_auto(exp_cap.unwrap()).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `act_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:112:35 [INFO] [stdout] | [INFO] [stdout] 111 | let act = if act_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = act_cap` [INFO] [stdout] 112 | parse_custom_bool(act_cap.unwrap()).unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `exp_cap` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/stat.rs:117:35 [INFO] [stdout] | [INFO] [stdout] 116 | let exp = if exp_cap.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = exp_cap` [INFO] [stdout] 117 | parse_custom_bool(exp_cap.unwrap()).unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:134:55 [INFO] [stdout] | [INFO] [stdout] 134 | Self::InvalidPrefixDescriptor(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] = note: `#[warn(clippy::suspicious_to_owned)]` on by default [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 134 | Self::InvalidPrefixDescriptor(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 134 - Self::InvalidPrefixDescriptor(message) => message.to_owned(), [INFO] [stdout] 134 + Self::InvalidPrefixDescriptor(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:135:55 [INFO] [stdout] | [INFO] [stdout] 135 | Self::InvalidSuffixDescriptor(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 135 | Self::InvalidSuffixDescriptor(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 135 - Self::InvalidSuffixDescriptor(message) => message.to_owned(), [INFO] [stdout] 135 + Self::InvalidSuffixDescriptor(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:136:48 [INFO] [stdout] | [INFO] [stdout] 136 | Self::InvalidTaskFlags(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 136 | Self::InvalidTaskFlags(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 136 - Self::InvalidTaskFlags(message) => message.to_owned(), [INFO] [stdout] 136 + Self::InvalidTaskFlags(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/task.rs:137:48 [INFO] [stdout] | [INFO] [stdout] 137 | Self::InvalidGoalStats(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 137 | Self::InvalidGoalStats(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 137 - Self::InvalidGoalStats(message) => message.to_owned(), [INFO] [stdout] 137 + Self::InvalidGoalStats(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ttm_io/task.rs:266:12 [INFO] [stdout] | [INFO] [stdout] 266 | if !(idx_suffix_open_paren.is_some() && idx_suffix_close_paren.is_some()) [INFO] [stdout] | ____________^ [INFO] [stdout] 267 | | && !(idx_suffix_open_paren.is_none() && idx_suffix_close_paren.is_none()) [INFO] [stdout] | |_____________________________________________________________________________________^ help: try: `!(idx_suffix_open_paren.is_some() && idx_suffix_close_paren.is_some() || idx_suffix_open_paren.is_none() && idx_suffix_close_paren.is_none())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `idx_suffix_open_paren` after checking its variant with `is_some` [INFO] [stdout] --> src/ttm_io/task.rs:303:34 [INFO] [stdout] | [INFO] [stdout] 302 | if idx_suffix_open_paren.is_some() { [INFO] [stdout] | ---------------------------------- help: try: `if let Some() = idx_suffix_open_paren` [INFO] [stdout] 303 | let idx_open_paren = idx_suffix_open_paren.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:260:36 [INFO] [stdout] | [INFO] [stdout] 260 | let s_after_prefix: &str = &s[idx_prefix_closed_paren + 1..].trim(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `s[idx_prefix_closed_paren + 1..].trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:277:26 [INFO] [stdout] | [INFO] [stdout] 277 | Some(idx) => &s_after_prefix[..idx].trim(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `s_after_prefix[..idx].trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:285:43 [INFO] [stdout] | [INFO] [stdout] 285 | let task_flags: TaskFlags = match (&s[..idx_prefix_open_paren]).parse() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `s[..idx_prefix_open_paren]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/ttm_io/task.rs:314:20 [INFO] [stdout] | [INFO] [stdout] 314 | if idx_colon == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `idx_colon.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ttm_io/task.rs:316:24 [INFO] [stdout] | [INFO] [stdout] 316 | if field == "" { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `field.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/ttm_io/task.rs:322:41 [INFO] [stdout] | [INFO] [stdout] 322 | res.note_link = (&field[1..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/ttm_io/task.rs:320:21 [INFO] [stdout] | [INFO] [stdout] 320 | if field.starts_with('*') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 320 ~ if let Some() = field.strip_prefix('*') { [INFO] [stdout] 321 | // parse note link, skip '*' [INFO] [stdout] 322 ~ res.note_link = .to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:322:41 [INFO] [stdout] | [INFO] [stdout] 322 | res.note_link = (&field[1..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `field[1..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:326:31 [INFO] [stdout] | [INFO] [stdout] 326 | let key = (&field[..idx_colon.unwrap()]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `field[..idx_colon.unwrap()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/ttm_io/task.rs:327:31 [INFO] [stdout] | [INFO] [stdout] 327 | let val = (&field[idx_colon.unwrap() + 1..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `field[idx_colon.unwrap() + 1..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/ttm_io/task.rs:354:48 [INFO] [stdout] | [INFO] [stdout] 354 | res.other_stats.insert(key[1..].to_owned(), other_stats); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/ttm_io/task.rs:347:28 [INFO] [stdout] | [INFO] [stdout] 347 | } else if key.starts_with("g") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 347 ~ } else if let Some() = key.strip_prefix("g") { [INFO] [stdout] 348 | let other_stats = match parse_stat_tuple(&val.trim()) { [INFO] [stdout] ... [INFO] [stdout] 353 | // add to hash map, discard 'g' from key [INFO] [stdout] 354 ~ res.other_stats.insert(.to_owned(), other_stats); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:348:66 [INFO] [stdout] | [INFO] [stdout] 348 | let other_stats = match parse_stat_tuple(&val.trim()) { [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `val.trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ttm_io/task.rs:442:12 [INFO] [stdout] | [INFO] [stdout] 442 | if token == "" { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `token.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/task.rs:670:43 [INFO] [stdout] | [INFO] [stdout] 670 | test::assert_variant_eq(&act_err, &err); [INFO] [stdout] | ^^^^ help: change this to: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:50:16 [INFO] [stdout] | [INFO] [stdout] 50 | "M" => return Ok(Season::Summer), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 50 - "M" => return Ok(Season::Summer), [INFO] [stdout] 50 + "M" => Ok(Season::Summer), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:51:16 [INFO] [stdout] | [INFO] [stdout] 51 | "F" => return Ok(Season::Fall), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 51 - "F" => return Ok(Season::Fall), [INFO] [stdout] 51 + "F" => Ok(Season::Fall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:52:16 [INFO] [stdout] | [INFO] [stdout] 52 | "W" => return Ok(Season::Winter), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 52 - "W" => return Ok(Season::Winter), [INFO] [stdout] 52 + "W" => Ok(Season::Winter), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:53:16 [INFO] [stdout] | [INFO] [stdout] 53 | "S" => return Ok(Season::Spring), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 - "S" => return Ok(Season::Spring), [INFO] [stdout] 53 + "S" => Ok(Season::Spring), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:54:14 [INFO] [stdout] | [INFO] [stdout] 54 | _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 54 - _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] 54 + _ => Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:69:40 [INFO] [stdout] | [INFO] [stdout] 69 | "M" | "Mon" | "Monday" => return Ok(Weekday::Mon), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 69 - "M" | "Mon" | "Monday" => return Ok(Weekday::Mon), [INFO] [stdout] 69 + "M" | "Mon" | "Monday" => Ok(Weekday::Mon), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:70:40 [INFO] [stdout] | [INFO] [stdout] 70 | "T" | "Tue" | "Tuesday" => return Ok(Weekday::Tue), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 70 - "T" | "Tue" | "Tuesday" => return Ok(Weekday::Tue), [INFO] [stdout] 70 + "T" | "Tue" | "Tuesday" => Ok(Weekday::Tue), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:71:40 [INFO] [stdout] | [INFO] [stdout] 71 | "W" | "Wed" | "Wednesday" => return Ok(Weekday::Wed), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 71 - "W" | "Wed" | "Wednesday" => return Ok(Weekday::Wed), [INFO] [stdout] 71 + "W" | "Wed" | "Wednesday" => Ok(Weekday::Wed), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:72:40 [INFO] [stdout] | [INFO] [stdout] 72 | "R" | "Thu" | "Thursday" => return Ok(Weekday::Thu), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 72 - "R" | "Thu" | "Thursday" => return Ok(Weekday::Thu), [INFO] [stdout] 72 + "R" | "Thu" | "Thursday" => Ok(Weekday::Thu), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:73:40 [INFO] [stdout] | [INFO] [stdout] 73 | "F" | "Fri" | "Friday" => return Ok(Weekday::Fri), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 73 - "F" | "Fri" | "Friday" => return Ok(Weekday::Fri), [INFO] [stdout] 73 + "F" | "Fri" | "Friday" => Ok(Weekday::Fri), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:74:40 [INFO] [stdout] | [INFO] [stdout] 74 | "S" | "Sat" | "Saturday" => return Ok(Weekday::Sat), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 74 - "S" | "Sat" | "Saturday" => return Ok(Weekday::Sat), [INFO] [stdout] 74 + "S" | "Sat" | "Saturday" => Ok(Weekday::Sat), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:75:40 [INFO] [stdout] | [INFO] [stdout] 75 | "U" | "Sun" | "Sunday" => return Ok(Weekday::Sun), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 75 - "U" | "Sun" | "Sunday" => return Ok(Weekday::Sun), [INFO] [stdout] 75 + "U" | "Sun" | "Sunday" => Ok(Weekday::Sun), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 76 | _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 76 - _ => return Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] 76 + _ => Err(format!("Invalid Season Code: {}", s).into()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/ttm_io/date.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | DateCode {year: u32, season: Season, week: u32, day: Weekday}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `DateCode` [INFO] [stdout] --> src/ttm_io/date.rs:82:1 [INFO] [stdout] | [INFO] [stdout] 82 | / pub enum Date { [INFO] [stdout] 83 | | DateCode {year: u32, season: Season, week: u32, day: Weekday}, [INFO] [stdout] 84 | | WeekDateCode {year: u32, season: Season, week: u32}, [INFO] [stdout] 85 | | ShortDateCode {week: u32, day: Weekday}, [INFO] [stdout] 86 | | ShortWeekDateCode {week: u32}, [INFO] [stdout] 87 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:99:13 [INFO] [stdout] | [INFO] [stdout] 99 | / return Ok(Date::ShortDateCode { [INFO] [stdout] 100 | | week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 101 | | day: regex_utils::capture_parse(&cap, "Day")}); [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 99 ~ Ok(Date::ShortDateCode { [INFO] [stdout] 100 + week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 101 ~ day: regex_utils::capture_parse(&cap, "Day")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | / return Ok(Date::ShortWeekDateCode { [INFO] [stdout] 105 | | week: regex_utils::capture_parse_u32(&cap, "Week")}); [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 104 ~ Ok(Date::ShortWeekDateCode { [INFO] [stdout] 105 ~ week: regex_utils::capture_parse_u32(&cap, "Week")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | / return Ok(Date::DateCode { [INFO] [stdout] 109 | | year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 110 | | season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 111 | | week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 112 | | day: regex_utils::capture_parse(&cap, "Day")}); [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 108 ~ Ok(Date::DateCode { [INFO] [stdout] 109 + year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 110 + season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 111 + week: regex_utils::capture_parse_u32(&cap, "Week"), [INFO] [stdout] 112 ~ day: regex_utils::capture_parse(&cap, "Day")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:115:13 [INFO] [stdout] | [INFO] [stdout] 115 | / return Ok(Date::WeekDateCode { [INFO] [stdout] 116 | | year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 117 | | season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 118 | | week: regex_utils::capture_parse_u32(&cap, "Week")}); [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 115 ~ Ok(Date::WeekDateCode { [INFO] [stdout] 116 + year: regex_utils::capture_parse_u32(&cap, "Year"), [INFO] [stdout] 117 + season: regex_utils::capture_parse(&cap, "Season"), [INFO] [stdout] 118 ~ week: regex_utils::capture_parse_u32(&cap, "Week")}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ttm_io/date.rs:120:15 [INFO] [stdout] | [INFO] [stdout] 120 | else {return Err(format!("could not parse {} as a DateCode", s).into());} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 120 - else {return Err(format!("could not parse {} as a DateCode", s).into());} [INFO] [stdout] 120 + else {Err(format!("could not parse {} as a DateCode", s).into())} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `to_owned` call clones the `Cow<'_, str>` itself and does not cause its contents to become owned [INFO] [stdout] --> src/ttm_io/section.rs:41:39 [INFO] [stdout] | [INFO] [stdout] 41 | Self::Generic(message) => message.to_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_to_owned [INFO] [stdout] help: depending on intent, either make the `Cow` an `Owned` variant [INFO] [stdout] | [INFO] [stdout] 41 | Self::Generic(message) => message.into_owned(), [INFO] [stdout] | ++ [INFO] [stdout] help: or clone the `Cow` itself [INFO] [stdout] | [INFO] [stdout] 41 - Self::Generic(message) => message.to_owned(), [INFO] [stdout] 41 + Self::Generic(message) => message.clone(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ttm_io/section.rs:56:25 [INFO] [stdout] | [INFO] [stdout] 56 | let _line_idx = s.find("\n").or_else(|| Some(s.len())).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `or` instead [INFO] [stdout] | [INFO] [stdout] 56 - let _line_idx = s.find("\n").or_else(|| Some(s.len())).unwrap(); [INFO] [stdout] 56 + let _line_idx = s.find("\n").or(Some(s.len())).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/ttm_io/section.rs:59:30 [INFO] [stdout] | [INFO] [stdout] 59 | let specifier_line = scan [INFO] [stdout] | ______________________________^ [INFO] [stdout] 60 | | .next_line() [INFO] [stdout] 61 | | .or_else(|_e| Err(SectionParseError::Generic(specifier_line_error_msg.into())))?; [INFO] [stdout] | |___________________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 59 ~ let specifier_line = scan [INFO] [stdout] 60 ~ .next_line().map_err(|_e| SectionParseError::Generic(specifier_line_error_msg.into()))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ttm_io/section.rs:244:43 [INFO] [stdout] | [INFO] [stdout] 244 | test::assert_variant_eq(&act_err, &err); [INFO] [stdout] | ^^^^ help: change this to: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/utils/common.rs:337:42 [INFO] [stdout] | [INFO] [stdout] 337 | assert_eq!(StrUtils("OK").in_any(&vec!["OK", "PASS"]), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["OK", "PASS"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/utils/common.rs:338:42 [INFO] [stdout] | [INFO] [stdout] 338 | assert_eq!(StrUtils("NO").in_any(&vec!["OK", "PASS"]), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["OK", "PASS"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/ttm_io/regex_utils.rs:16:28 [INFO] [stdout] | [INFO] [stdout] 16 | out_regex.push(vec![&scope_token[..capture_name_start_idx], &scope_token[capture_name_end_idx+1..]].join("")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[&scope_token[..capture_name_start_idx], &scope_token[capture_name_end_idx+1..]]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/utils/test.rs:19:26 [INFO] [stdout] | [INFO] [stdout] 19 | Err(e) => panic!(format!( [INFO] [stdout] | __________________________^ [INFO] [stdout] 20 | | "\nExpected \"{}\" to parse but got {}: \"{}\"\n", [INFO] [stdout] 21 | | s, std::any::type_name::(), E::from(e))), [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 19 ~ Err(e) => panic!( [INFO] [stdout] 20 | "\nExpected \"{}\" to parse but got {}: \"{}\"\n", [INFO] [stdout] 21 ~ s, std::any::type_name::(), E::from(e)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/ttm_io/task.rs:220:20 [INFO] [stdout] | [INFO] [stdout] 220 | panic!(format!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 221 | | "Task Priority cannot exceed max value of {}", [INFO] [stdout] 222 | | Task::NO_PRIORITY [INFO] [stdout] 223 | | )); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 220 ~ panic!( [INFO] [stdout] 221 | "Task Priority cannot exceed max value of {}", [INFO] [stdout] 222 | Task::NO_PRIORITY [INFO] [stdout] 223 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.07s [INFO] running `Command { std: "docker" "inspect" "00ed358ce24282be0e47fb47f05746298dab465e7ccebf381eecdf50e2fc7529", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "00ed358ce24282be0e47fb47f05746298dab465e7ccebf381eecdf50e2fc7529", kill_on_drop: false }` [INFO] [stdout] 00ed358ce24282be0e47fb47f05746298dab465e7ccebf381eecdf50e2fc7529