[INFO] cloning repository https://github.com/Tesohh/torcolrs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Tesohh/torcolrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTesohh%2Ftorcolrs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTesohh%2Ftorcolrs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 72f0f456b8b05feff22c390fb06f4bfd7ba37761 [INFO] linting Tesohh/torcolrs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTesohh%2Ftorcolrs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Tesohh/torcolrs [INFO] finished tweaking git repo https://github.com/Tesohh/torcolrs [INFO] tweaked toml for git repo https://github.com/Tesohh/torcolrs written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Tesohh/torcolrs 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/Tesohh/torcolrs already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 01261737493d9da288d939b3cd72daa59e4ddcc8e4b8d7f0f884efaaf1207825 [INFO] running `Command { std: "docker" "start" "-a" "01261737493d9da288d939b3cd72daa59e4ddcc8e4b8d7f0f884efaaf1207825", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "01261737493d9da288d939b3cd72daa59e4ddcc8e4b8d7f0f884efaaf1207825", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "01261737493d9da288d939b3cd72daa59e4ddcc8e4b8d7f0f884efaaf1207825", kill_on_drop: false }` [INFO] [stdout] 01261737493d9da288d939b3cd72daa59e4ddcc8e4b8d7f0f884efaaf1207825 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 1ea2cd18a826fb0b5bcf9ebb02441d9ee7bebab785942b4a13b2dfa97ea70e5c [INFO] running `Command { std: "docker" "start" "-a" "1ea2cd18a826fb0b5bcf9ebb02441d9ee7bebab785942b4a13b2dfa97ea70e5c", kill_on_drop: false }` [INFO] [stderr] Compiling anyhow v1.0.79 [INFO] [stderr] Checking torcolrs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: methods `extract_array` and `extract_type` are never used [INFO] [stdout] --> src/tdvm/value.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 39 | pub trait Extract { [INFO] [stdout] | ------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 43 | fn extract_array(&self) -> anyhow::Result>; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 44 | fn extract_type(&self) -> anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/arithmetic.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | let args = (args.get(0).context("num1")?, args.get(1).context("num2")?); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/arithmetic.rs:30:25 [INFO] [stdout] | [INFO] [stdout] 30 | let args = (args.get(0).context("num1")?, args.get(1).context("num2")?); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tdvm/cmds/arithmetic.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | assert!(!err.is_ok()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `err.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tdvm/cmds/arithmetic.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | assert!(!err.is_ok()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `err.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/cmd.rs:17:24 [INFO] [stdout] | [INFO] [stdout] 17 | let name = args.get(0).context("name")?.extract_str()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/eqchecks.rs:18:23 [INFO] [stdout] | [INFO] [stdout] 18 | let lhs = args.get(0).context("lhs")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/eqchecks.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | let lhs = args.get(0).context("lhs")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/greaterlesser.rs:18:23 [INFO] [stdout] | [INFO] [stdout] 18 | let lhs = args.get(0).context("lhs")?.extract_num()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/greaterlesser.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | let lhs = args.get(0).context("lhs")?.extract_num()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/lasa.rs:18:24 [INFO] [stdout] | [INFO] [stdout] 18 | let name = args.get(0).context("name")?.extract_str()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/no.rs:17:21 [INFO] [stdout] | [INFO] [stdout] 17 | let b = args [INFO] [stdout] | _____________________^ [INFO] [stdout] 18 | | .get(0) [INFO] [stdout] | |_______________________^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/se.rs:17:24 [INFO] [stdout] | [INFO] [stdout] 17 | let cond = args.get(0).context("cond")?.extract_bool()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/stampa.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | let value = args.get(0).context("first arg is empty")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tdvm/cmds/stampa.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | / match value { [INFO] [stdout] 20 | | Value::Ident(_) => bail!( [INFO] [stdout] 21 | | "cannot print identifier (maybe {} isn't a variable?)", [INFO] [stdout] 22 | | value.extract_str()? [INFO] [stdout] 23 | | ), [INFO] [stdout] 24 | | _ => {} [INFO] [stdout] 25 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 19 ~ if let Value::Ident(_) = value { bail!( [INFO] [stdout] 20 + "cannot print identifier (maybe {} isn't a variable?)", [INFO] [stdout] 21 + value.extract_str()? [INFO] [stdout] 22 + ) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/testlasa.rs:18:24 [INFO] [stdout] | [INFO] [stdout] 18 | let name = args.get(0).context("name")?.extract_str()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/treturn.rs:19:25 [INFO] [stdout] | [INFO] [stdout] 19 | let value = args.get(0).context("value")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/tdvm/mod.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub mod tdvm; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | return self.test_memory.get(key).unwrap().value == expect; [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] 38 - return self.test_memory.get(key).unwrap().value == expect; [INFO] [stdout] 38 + self.test_memory.get(key).unwrap().value == expect [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | return Err(anyhow!("[tdvm: line {}] {}", self.linecursor + 1, err)); [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] 42 - return Err(anyhow!("[tdvm: line {}] {}", self.linecursor + 1, err)); [INFO] [stdout] 42 + Err(anyhow!("[tdvm: line {}] {}", self.linecursor + 1, err)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | return cmd.run(tokens.to_vec(), self); [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] 68 - return cmd.run(tokens.to_vec(), self); [INFO] [stdout] 68 + cmd.run(tokens.to_vec(), self) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `tokens.get(0)` [INFO] [stdout] --> src/tdvm/tdvm.rs:58:35 [INFO] [stdout] | [INFO] [stdout] 58 | if let Token::Cmd(name) = tokens.get(0).context("out of bounds")? { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/tdvm/tdvm.rs:74:26 [INFO] [stdout] | [INFO] [stdout] 74 | let old_cursor = self.linecursor.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.linecursor` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:213:9 [INFO] [stdout] | [INFO] [stdout] 213 | return Ok(()); [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] 213 - return Ok(()); [INFO] [stdout] 213 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/tdvm/tdvm.rs:131:31 [INFO] [stdout] | [INFO] [stdout] 131 | .filter(|tok| match tok { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 132 | | Token::Comment(_) => false, [INFO] [stdout] 133 | | _ => true, [INFO] [stdout] 134 | | }) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 131 - .filter(|tok| match tok { [INFO] [stdout] 132 - Token::Comment(_) => false, [INFO] [stdout] 133 - _ => true, [INFO] [stdout] 134 - }) [INFO] [stdout] 131 + .filter(|tok| !matches!(tok, Token::Comment(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tdvm/tdvm.rs:137:16 [INFO] [stdout] | [INFO] [stdout] 137 | if tokens.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tokens.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `tokens.get(0)` [INFO] [stdout] --> src/tdvm/tdvm.rs:194:25 [INFO] [stdout] | [INFO] [stdout] 194 | let first = tokens.get(0).context("first token doesn't exist")?; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/tdvm/types.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | Type, [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: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/tdvm/types.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | impl Into for String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 15 ~ impl From for Type { [INFO] [stdout] 16 ~ fn from(val: String) -> Self { [INFO] [stdout] 17 ~ match val.as_str() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/tdvm/value.rs:135:1 [INFO] [stdout] | [INFO] [stdout] 135 | impl Into for Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 135 ~ impl From for Type { [INFO] [stdout] 136 ~ fn from(val: Value) -> Self { [INFO] [stdout] 137 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/tdvm/value.rs:150:1 [INFO] [stdout] | [INFO] [stdout] 150 | impl Into for &Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From<&tdvm::value::Value>` [INFO] [stdout] | [INFO] [stdout] 150 ~ impl From<&Value> for Type { [INFO] [stdout] 151 ~ fn from(val: &Value) -> Self { [INFO] [stdout] 152 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tokenizer/blocks.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / return match &first { [INFO] [stdout] 45 | | '"' => Some((Token::Value(Value::Str(s)), subcursor)), [INFO] [stdout] 46 | | '(' => Some((Token::Sub(tokens), subcursor)), [INFO] [stdout] 47 | | _ => None, [INFO] [stdout] 48 | | }; [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] 44 ~ match &first { [INFO] [stdout] 45 + '"' => Some((Token::Value(Value::Str(s)), subcursor)), [INFO] [stdout] 46 + '(' => Some((Token::Sub(tokens), subcursor)), [INFO] [stdout] 47 + _ => None, [INFO] [stdout] 48 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/tokenizer/blocks.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | if c == None { [INFO] [stdout] | ^^^^^^^^^ help: use `Option::is_none()` instead: `c.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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tokenizer/blocks.rs:42:39 [INFO] [stdout] | [INFO] [stdout] 42 | let tokens = tokenize(s.as_str(), &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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: unneeded `return` statement [INFO] [stdout] --> src/tokenizer/number_parse.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | return Some((Token::Value(Value::Num(n)), subcursor)); [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] 28 - return Some((Token::Value(Value::Num(n)), subcursor)); [INFO] [stdout] 28 + Some((Token::Value(Value::Num(n)), subcursor)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/tokenizer/number_parse.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | if let None = c { [INFO] [stdout] | -------^^^^---- help: try: `if c.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/tokenizer/parse_word.rs:35:16 [INFO] [stdout] | [INFO] [stdout] 35 | if let None = c { [INFO] [stdout] | -------^^^^---- help: try: `if c.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tokenizer/parse_word.rs:52:32 [INFO] [stdout] | [INFO] [stdout] 52 | let tok = identify_word(s, &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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: module has the same name as its containing module [INFO] [stdout] --> src/tokenizer/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | pub mod tokenizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tokenizer/tokenizer.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | return tokens; [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] 86 - return tokens; [INFO] [stdout] 86 + tokens [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tokenizer/tokenizer.rs:62:49 [INFO] [stdout] | [INFO] [stdout] 62 | let tok = blocks::block(input, &cursor, &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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/tokenizer/tokenizer.rs:76:46 [INFO] [stdout] | [INFO] [stdout] 76 | let tok = parse_word(input, &cursor, &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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/tokenizer/blocks.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | if !vec!['"', '('].contains(&first) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use an array directly: `['"', '(']` [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: methods `extract_array` and `extract_type` are never used [INFO] [stdout] --> src/tdvm/value.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 39 | pub trait Extract { [INFO] [stdout] | ------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 43 | fn extract_array(&self) -> anyhow::Result>; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 44 | fn extract_type(&self) -> anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/arithmetic.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | let args = (args.get(0).context("num1")?, args.get(1).context("num2")?); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/arithmetic.rs:30:25 [INFO] [stdout] | [INFO] [stdout] 30 | let args = (args.get(0).context("num1")?, args.get(1).context("num2")?); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/cmd.rs:17:24 [INFO] [stdout] | [INFO] [stdout] 17 | let name = args.get(0).context("name")?.extract_str()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/eqchecks.rs:18:23 [INFO] [stdout] | [INFO] [stdout] 18 | let lhs = args.get(0).context("lhs")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/eqchecks.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | let lhs = args.get(0).context("lhs")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/greaterlesser.rs:18:23 [INFO] [stdout] | [INFO] [stdout] 18 | let lhs = args.get(0).context("lhs")?.extract_num()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/greaterlesser.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | let lhs = args.get(0).context("lhs")?.extract_num()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/lasa.rs:18:24 [INFO] [stdout] | [INFO] [stdout] 18 | let name = args.get(0).context("name")?.extract_str()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/no.rs:17:21 [INFO] [stdout] | [INFO] [stdout] 17 | let b = args [INFO] [stdout] | _____________________^ [INFO] [stdout] 18 | | .get(0) [INFO] [stdout] | |_______________________^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/se.rs:17:24 [INFO] [stdout] | [INFO] [stdout] 17 | let cond = args.get(0).context("cond")?.extract_bool()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/stampa.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | let value = args.get(0).context("first arg is empty")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tdvm/cmds/stampa.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | / match value { [INFO] [stdout] 20 | | Value::Ident(_) => bail!( [INFO] [stdout] 21 | | "cannot print identifier (maybe {} isn't a variable?)", [INFO] [stdout] 22 | | value.extract_str()? [INFO] [stdout] 23 | | ), [INFO] [stdout] 24 | | _ => {} [INFO] [stdout] 25 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 19 ~ if let Value::Ident(_) = value { bail!( [INFO] [stdout] 20 + "cannot print identifier (maybe {} isn't a variable?)", [INFO] [stdout] 21 + value.extract_str()? [INFO] [stdout] 22 + ) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/testlasa.rs:18:24 [INFO] [stdout] | [INFO] [stdout] 18 | let name = args.get(0).context("name")?.extract_str()?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/tdvm/cmds/treturn.rs:19:25 [INFO] [stdout] | [INFO] [stdout] 19 | let value = args.get(0).context("value")?; [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/tdvm/mod.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub mod tdvm; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | return self.test_memory.get(key).unwrap().value == expect; [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] 38 - return self.test_memory.get(key).unwrap().value == expect; [INFO] [stdout] 38 + self.test_memory.get(key).unwrap().value == expect [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | return Err(anyhow!("[tdvm: line {}] {}", self.linecursor + 1, err)); [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] 42 - return Err(anyhow!("[tdvm: line {}] {}", self.linecursor + 1, err)); [INFO] [stdout] 42 + Err(anyhow!("[tdvm: line {}] {}", self.linecursor + 1, err)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | return cmd.run(tokens.to_vec(), self); [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] 68 - return cmd.run(tokens.to_vec(), self); [INFO] [stdout] 68 + cmd.run(tokens.to_vec(), self) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `tokens.get(0)` [INFO] [stdout] --> src/tdvm/tdvm.rs:58:35 [INFO] [stdout] | [INFO] [stdout] 58 | if let Token::Cmd(name) = tokens.get(0).context("out of bounds")? { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/tdvm/tdvm.rs:74:26 [INFO] [stdout] | [INFO] [stdout] 74 | let old_cursor = self.linecursor.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.linecursor` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tdvm/tdvm.rs:213:9 [INFO] [stdout] | [INFO] [stdout] 213 | return Ok(()); [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] 213 - return Ok(()); [INFO] [stdout] 213 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/tdvm/tdvm.rs:131:31 [INFO] [stdout] | [INFO] [stdout] 131 | .filter(|tok| match tok { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 132 | | Token::Comment(_) => false, [INFO] [stdout] 133 | | _ => true, [INFO] [stdout] 134 | | }) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 131 - .filter(|tok| match tok { [INFO] [stdout] 132 - Token::Comment(_) => false, [INFO] [stdout] 133 - _ => true, [INFO] [stdout] 134 - }) [INFO] [stdout] 131 + .filter(|tok| !matches!(tok, Token::Comment(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tdvm/tdvm.rs:137:16 [INFO] [stdout] | [INFO] [stdout] 137 | if tokens.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tokens.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `tokens.get(0)` [INFO] [stdout] --> src/tdvm/tdvm.rs:194:25 [INFO] [stdout] | [INFO] [stdout] 194 | let first = tokens.get(0).context("first token doesn't exist")?; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/tdvm/types.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | Type, [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: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/tdvm/types.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | impl Into for String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 15 ~ impl From for Type { [INFO] [stdout] 16 ~ fn from(val: String) -> Self { [INFO] [stdout] 17 ~ match val.as_str() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/tdvm/value.rs:135:1 [INFO] [stdout] | [INFO] [stdout] 135 | impl Into for Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 135 ~ impl From for Type { [INFO] [stdout] 136 ~ fn from(val: Value) -> Self { [INFO] [stdout] 137 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/tdvm/value.rs:150:1 [INFO] [stdout] | [INFO] [stdout] 150 | impl Into for &Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From<&tdvm::value::Value>` [INFO] [stdout] | [INFO] [stdout] 150 ~ impl From<&Value> for Type { [INFO] [stdout] 151 ~ fn from(val: &Value) -> Self { [INFO] [stdout] 152 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tokenizer/blocks.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / return match &first { [INFO] [stdout] 45 | | '"' => Some((Token::Value(Value::Str(s)), subcursor)), [INFO] [stdout] 46 | | '(' => Some((Token::Sub(tokens), subcursor)), [INFO] [stdout] 47 | | _ => None, [INFO] [stdout] 48 | | }; [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] 44 ~ match &first { [INFO] [stdout] 45 + '"' => Some((Token::Value(Value::Str(s)), subcursor)), [INFO] [stdout] 46 + '(' => Some((Token::Sub(tokens), subcursor)), [INFO] [stdout] 47 + _ => None, [INFO] [stdout] 48 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/tokenizer/blocks.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | if c == None { [INFO] [stdout] | ^^^^^^^^^ help: use `Option::is_none()` instead: `c.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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tokenizer/blocks.rs:42:39 [INFO] [stdout] | [INFO] [stdout] 42 | let tokens = tokenize(s.as_str(), &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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: unneeded `return` statement [INFO] [stdout] --> src/tokenizer/number_parse.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | return Some((Token::Value(Value::Num(n)), subcursor)); [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] 28 - return Some((Token::Value(Value::Num(n)), subcursor)); [INFO] [stdout] 28 + Some((Token::Value(Value::Num(n)), subcursor)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/tokenizer/number_parse.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | if let None = c { [INFO] [stdout] | -------^^^^---- help: try: `if c.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/tokenizer/parse_word.rs:35:16 [INFO] [stdout] | [INFO] [stdout] 35 | if let None = c { [INFO] [stdout] | -------^^^^---- help: try: `if c.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tokenizer/parse_word.rs:52:32 [INFO] [stdout] | [INFO] [stdout] 52 | let tok = identify_word(s, &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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: module has the same name as its containing module [INFO] [stdout] --> src/tokenizer/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | pub mod tokenizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tokenizer/tokenizer.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | return tokens; [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] 86 - return tokens; [INFO] [stdout] 86 + tokens [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tokenizer/tokenizer.rs:62:49 [INFO] [stdout] | [INFO] [stdout] 62 | let tok = blocks::block(input, &cursor, &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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/tokenizer/tokenizer.rs:76:46 [INFO] [stdout] | [INFO] [stdout] 76 | let tok = parse_word(input, &cursor, &tdvm); [INFO] [stdout] | ^^^^^ help: change this to: `tdvm` [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/tokenizer/blocks.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | if !vec!['"', '('].contains(&first) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use an array directly: `['"', '(']` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.25s [INFO] running `Command { std: "docker" "inspect" "1ea2cd18a826fb0b5bcf9ebb02441d9ee7bebab785942b4a13b2dfa97ea70e5c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1ea2cd18a826fb0b5bcf9ebb02441d9ee7bebab785942b4a13b2dfa97ea70e5c", kill_on_drop: false }` [INFO] [stdout] 1ea2cd18a826fb0b5bcf9ebb02441d9ee7bebab785942b4a13b2dfa97ea70e5c