[INFO] cloning repository https://github.com/ebrahim02-ag/lox-interpreter-with-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ebrahim02-ag/lox-interpreter-with-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Febrahim02-ag%2Flox-interpreter-with-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Febrahim02-ag%2Flox-interpreter-with-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a7afc4be831d89938a0c2cd75cfa9dc4f25ab19b [INFO] linting ebrahim02-ag/lox-interpreter-with-rust against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Febrahim02-ag%2Flox-interpreter-with-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ebrahim02-ag/lox-interpreter-with-rust [INFO] finished tweaking git repo https://github.com/ebrahim02-ag/lox-interpreter-with-rust [INFO] tweaked toml for git repo https://github.com/ebrahim02-ag/lox-interpreter-with-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ebrahim02-ag/lox-interpreter-with-rust 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/ebrahim02-ag/lox-interpreter-with-rust 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-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] aa8043e28cde391f65a28fd5e14f4552392430f830f5e21f338bd0fb1fb0057d [INFO] running `Command { std: "docker" "start" "-a" "aa8043e28cde391f65a28fd5e14f4552392430f830f5e21f338bd0fb1fb0057d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "aa8043e28cde391f65a28fd5e14f4552392430f830f5e21f338bd0fb1fb0057d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa8043e28cde391f65a28fd5e14f4552392430f830f5e21f338bd0fb1fb0057d", kill_on_drop: false }` [INFO] [stdout] aa8043e28cde391f65a28fd5e14f4552392430f830f5e21f338bd0fb1fb0057d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] e8a9de34ade810122617040868fc8e1e92ac6beb594d4af175db3dfab0284a5a [INFO] running `Command { std: "docker" "start" "-a" "e8a9de34ade810122617040868fc8e1e92ac6beb594d4af175db3dfab0284a5a", kill_on_drop: false }` [INFO] [stderr] Checking interpreters v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `core::f32` [INFO] [stdout] --> src/scanner.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use core::f32; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/parser.rs:4:25 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::token_type::{self, TokenType}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | tokens: tokens, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `tokens` [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: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:90:44 [INFO] [stdout] | [INFO] [stdout] 90 | return Ok(Stmt::Variable(Variable {name: name, initializer: expr?})); [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | condition: condition, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | condition: condition, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | body: body, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `core::f32` [INFO] [stdout] --> src/scanner.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use core::f32; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:175:36 [INFO] [stdout] | [INFO] [stdout] 175 | body = Stmt::While(While { condition: condition, body: Box::new(body) }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:231:41 [INFO] [stdout] | [INFO] [stdout] 231 | Ok(Expr::Assign(Assign {name: name, value: Box::new(value)})) [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/parser.rs:4:25 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::token_type::{self, TokenType}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | tokens: tokens, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `tokens` [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: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:90:44 [INFO] [stdout] | [INFO] [stdout] 90 | return Ok(Stmt::Variable(Variable {name: name, initializer: expr?})); [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | condition: condition, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | condition: condition, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | body: body, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:175:36 [INFO] [stdout] | [INFO] [stdout] 175 | body = Stmt::While(While { condition: condition, body: Box::new(body) }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:231:41 [INFO] [stdout] | [INFO] [stdout] 231 | Ok(Expr::Assign(Assign {name: name, value: Box::new(value)})) [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:331:53 [INFO] [stdout] | [INFO] [stdout] 331 | return Ok(Expr::Variable(VariableExpr { name: name})) [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/token.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | line: line [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/environment.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | enclosing: enclosing, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `enclosing` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:331:53 [INFO] [stdout] | [INFO] [stdout] 331 | return Ok(Expr::Variable(VariableExpr { name: name})) [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/token.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | line: line [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/environment.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | enclosing: enclosing, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `enclosing` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stm` [INFO] [stdout] --> src/parser.rs:43:17 [INFO] [stdout] | [INFO] [stdout] 43 | Err(stm) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_stm` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stm` [INFO] [stdout] --> src/parser.rs:43:17 [INFO] [stdout] | [INFO] [stdout] 43 | Err(stm) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_stm` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `obj` [INFO] [stdout] --> src/interpreter.rs:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | let obj = self.evaluate(&stmt.expression); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_obj` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/main.rs:65:60 [INFO] [stdout] | [INFO] [stdout] 65 | let contents: Vec = fs::read(path).unwrap_or_else(|err|{ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `printer` [INFO] [stdout] --> src/main.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let printer = ast_printer::AstPrinter; [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_printer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_prompt` is never used [INFO] [stdout] --> src/main.rs:78:4 [INFO] [stdout] | [INFO] [stdout] 78 | fn run_prompt() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_line` is never used [INFO] [stdout] --> src/main.rs:147:4 [INFO] [stdout] | [INFO] [stdout] 147 | fn remove_line(s: String) -> String{ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `runtime_error` is never used [INFO] [stdout] --> src/main.rs:166:4 [INFO] [stdout] | [INFO] [stdout] 166 | fn runtime_error(err: RuntimeError){ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `obj` [INFO] [stdout] --> src/interpreter.rs:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | let obj = self.evaluate(&stmt.expression); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_obj` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/scanner.rs:50:51 [INFO] [stdout] | [INFO] [stdout] 50 | let token: Token = Token::new(token_type, &text, literal, self.line); [INFO] [stdout] | ^^^^^ help: change this to: `text` [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: this boolean expression can be simplified [INFO] [stdout] --> src/scanner.rs:104:27 [INFO] [stdout] | [INFO] [stdout] 104 | while !self.is_at_end() && !(self.match_char('*') && self.match_char('/')) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(self.is_at_end() || self.match_char('*') && self.match_char('/'))` [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 pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> src/scanner.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | / match next{ [INFO] [stdout] 141 | | None => '\0', [INFO] [stdout] 142 | | Some(i) => i [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________^ help: replace with: `next.unwrap_or('\0')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/main.rs:65:60 [INFO] [stdout] | [INFO] [stdout] 65 | let contents: Vec = fs::read(path).unwrap_or_else(|err|{ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/scanner.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | return *c >= '0' && *c <= '9' [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] 186 - return *c >= '0' && *c <= '9' [INFO] [stdout] 186 + *c >= '0' && *c <= '9' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `printer` [INFO] [stdout] --> src/main.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let printer = ast_printer::AstPrinter; [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_printer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/scanner.rs:217:9 [INFO] [stdout] | [INFO] [stdout] 217 | return (*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c == '_') [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] 217 - return (*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c == '_') [INFO] [stdout] 217 + (*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c == '_') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/scanner.rs:221:9 [INFO] [stdout] | [INFO] [stdout] 221 | return self.is_alpha(c) || self.is_digit(c) [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] 221 - return self.is_alpha(c) || self.is_digit(c) [INFO] [stdout] 221 + self.is_alpha(c) || self.is_digit(c) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | return Some(statements); [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] 31 - return Some(statements); [INFO] [stdout] 31 + Some(statements) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | return self.expression_statement() [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 self.expression_statement() [INFO] [stdout] 76 + self.expression_statement() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | return Ok(Stmt::Variable(Variable {name: name, initializer: expr?})); [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] 90 - return Ok(Stmt::Variable(Variable {name: name, initializer: expr?})); [INFO] [stdout] 90 + Ok(Stmt::Variable(Variable {name: name, initializer: expr?})) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_prompt` is never used [INFO] [stdout] --> src/main.rs:78:4 [INFO] [stdout] | [INFO] [stdout] 78 | fn run_prompt() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_line` is never used [INFO] [stdout] --> src/main.rs:147:4 [INFO] [stdout] | [INFO] [stdout] 147 | fn remove_line(s: String) -> String{ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `runtime_error` is never used [INFO] [stdout] --> src/main.rs:166:4 [INFO] [stdout] | [INFO] [stdout] 166 | fn runtime_error(err: RuntimeError){ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | / return Ok(Stmt::If(If{ [INFO] [stdout] 106 | | condition: condition, [INFO] [stdout] 107 | | then_branch: then_stmt, [INFO] [stdout] 108 | | else_branch: else_stmt [INFO] [stdout] 109 | | })) [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] 105 ~ Ok(Stmt::If(If{ [INFO] [stdout] 106 + condition: condition, [INFO] [stdout] 107 + then_branch: then_stmt, [INFO] [stdout] 108 + else_branch: else_stmt [INFO] [stdout] 109 + })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/scanner.rs:50:51 [INFO] [stdout] | [INFO] [stdout] 50 | let token: Token = Token::new(token_type, &text, literal, self.line); [INFO] [stdout] | ^^^^^ help: change this to: `text` [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: this boolean expression can be simplified [INFO] [stdout] --> src/scanner.rs:104:27 [INFO] [stdout] | [INFO] [stdout] 104 | while !self.is_at_end() && !(self.match_char('*') && self.match_char('/')) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(self.is_at_end() || self.match_char('*') && self.match_char('/'))` [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: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | / return Ok(Stmt::While(While{ [INFO] [stdout] 121 | | condition: condition, [INFO] [stdout] 122 | | body: body, [INFO] [stdout] 123 | | })) [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 ~ Ok(Stmt::While(While{ [INFO] [stdout] 121 + condition: condition, [INFO] [stdout] 122 + body: body, [INFO] [stdout] 123 + })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:157:23 [INFO] [stdout] | [INFO] [stdout] 157 | self._consume(&&TokenType::RightParen, "Expected a ')' end of 'for'")?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(&TokenType::RightParen)` [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 pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> src/scanner.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | / match next{ [INFO] [stdout] 141 | | None => '\0', [INFO] [stdout] 142 | | Some(i) => i [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________^ help: replace with: `next.unwrap_or('\0')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/parser.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | let condition = condition.unwrap_or_else(|| Expr::Literal(Literal::Bool(true))); [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 `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 173 - let condition = condition.unwrap_or_else(|| Expr::Literal(Literal::Bool(true))); [INFO] [stdout] 173 + let condition = condition.unwrap_or(Expr::Literal(Literal::Bool(true))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | return Ok(Stmt::Print(Print {expression: expr?})); [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] 193 - return Ok(Stmt::Print(Print {expression: expr?})); [INFO] [stdout] 193 + Ok(Stmt::Print(Print {expression: expr?})) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:199:9 [INFO] [stdout] | [INFO] [stdout] 199 | return Ok(Stmt::Expression(Expression {expression: expr?})); [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] 199 - return Ok(Stmt::Expression(Expression {expression: expr?})); [INFO] [stdout] 199 + Ok(Stmt::Expression(Expression {expression: expr?})) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/scanner.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | return *c >= '0' && *c <= '9' [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] 186 - return *c >= '0' && *c <= '9' [INFO] [stdout] 186 + *c >= '0' && *c <= '9' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/scanner.rs:217:9 [INFO] [stdout] | [INFO] [stdout] 217 | return (*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c == '_') [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] 217 - return (*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c == '_') [INFO] [stdout] 217 + (*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c == '_') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/scanner.rs:221:9 [INFO] [stdout] | [INFO] [stdout] 221 | return self.is_alpha(c) || self.is_digit(c) [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] 221 - return self.is_alpha(c) || self.is_digit(c) [INFO] [stdout] 221 + self.is_alpha(c) || self.is_digit(c) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | return Some(statements); [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] 31 - return Some(statements); [INFO] [stdout] 31 + Some(statements) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | return self.expression_statement() [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 self.expression_statement() [INFO] [stdout] 76 + self.expression_statement() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:291:9 [INFO] [stdout] | [INFO] [stdout] 291 | let expr; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `expr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 291 ~ [INFO] [stdout] 292 ~ let expr = if self._match(&token_types){ [INFO] [stdout] 293 | let operator = self._previous().clone(); [INFO] [stdout] 294 | let right = self.unary()?; [INFO] [stdout] 295 ~ Expr::Unary(Unary { op:operator, right: Box::new(right) }) [INFO] [stdout] 296 | } else { [INFO] [stdout] 297 ~ self.primary()? [INFO] [stdout] 298 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | return Ok(Stmt::Variable(Variable {name: name, initializer: expr?})); [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] 90 - return Ok(Stmt::Variable(Variable {name: name, initializer: expr?})); [INFO] [stdout] 90 + Ok(Stmt::Variable(Variable {name: name, initializer: expr?})) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | / return Ok(Stmt::If(If{ [INFO] [stdout] 106 | | condition: condition, [INFO] [stdout] 107 | | then_branch: then_stmt, [INFO] [stdout] 108 | | else_branch: else_stmt [INFO] [stdout] 109 | | })) [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] 105 ~ Ok(Stmt::If(If{ [INFO] [stdout] 106 + condition: condition, [INFO] [stdout] 107 + then_branch: then_stmt, [INFO] [stdout] 108 + else_branch: else_stmt [INFO] [stdout] 109 + })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | / return Ok(Stmt::While(While{ [INFO] [stdout] 121 | | condition: condition, [INFO] [stdout] 122 | | body: body, [INFO] [stdout] 123 | | })) [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 ~ Ok(Stmt::While(While{ [INFO] [stdout] 121 + condition: condition, [INFO] [stdout] 122 + body: body, [INFO] [stdout] 123 + })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:157:23 [INFO] [stdout] | [INFO] [stdout] 157 | self._consume(&&TokenType::RightParen, "Expected a ')' end of 'for'")?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(&TokenType::RightParen)` [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/parser.rs:395:9 [INFO] [stdout] | [INFO] [stdout] 395 | return true [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] 395 - return true [INFO] [stdout] 395 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/parser.rs:386:17 [INFO] [stdout] | [INFO] [stdout] 386 | advanced = advanced + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `advanced += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | return *token_type == self._peek().kind [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] 403 - return *token_type == self._peek().kind [INFO] [stdout] 403 + *token_type == self._peek().kind [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/parser.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | let condition = condition.unwrap_or_else(|| Expr::Literal(Literal::Bool(true))); [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 `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 173 - let condition = condition.unwrap_or_else(|| Expr::Literal(Literal::Bool(true))); [INFO] [stdout] 173 + let condition = condition.unwrap_or(Expr::Literal(Literal::Bool(true))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | return Ok(Stmt::Print(Print {expression: expr?})); [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] 193 - return Ok(Stmt::Print(Print {expression: expr?})); [INFO] [stdout] 193 + Ok(Stmt::Print(Print {expression: expr?})) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:199:9 [INFO] [stdout] | [INFO] [stdout] 199 | return Ok(Stmt::Expression(Expression {expression: expr?})); [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] 199 - return Ok(Stmt::Expression(Expression {expression: expr?})); [INFO] [stdout] 199 + Ok(Stmt::Expression(Expression {expression: expr?})) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/ast_printer.rs:11:13 [INFO] [stdout] | [INFO] [stdout] 11 | s = s + i.as_str(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `s += i.as_str()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:291:9 [INFO] [stdout] | [INFO] [stdout] 291 | let expr; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `expr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 291 ~ [INFO] [stdout] 292 ~ let expr = if self._match(&token_types){ [INFO] [stdout] 293 | let operator = self._previous().clone(); [INFO] [stdout] 294 | let right = self.unary()?; [INFO] [stdout] 295 ~ Expr::Unary(Unary { op:operator, right: Box::new(right) }) [INFO] [stdout] 296 | } else { [INFO] [stdout] 297 ~ self.primary()? [INFO] [stdout] 298 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/ast_printer.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | e.else_branch.as_ref().map(|e| s = format!("{} else {}", s, walk_stmt(self, &e))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 31 - e.else_branch.as_ref().map(|e| s = format!("{} else {}", s, walk_stmt(self, &e))); [INFO] [stdout] 31 + if let Some(e) = e.else_branch.as_ref() { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast_printer.rs:31:85 [INFO] [stdout] | [INFO] [stdout] 31 | e.else_branch.as_ref().map(|e| s = format!("{} else {}", s, walk_stmt(self, &e))); [INFO] [stdout] | ^^ help: change this to: `e` [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/parser.rs:395:9 [INFO] [stdout] | [INFO] [stdout] 395 | return true [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] 395 - return true [INFO] [stdout] 395 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/parser.rs:386:17 [INFO] [stdout] | [INFO] [stdout] 386 | advanced = advanced + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `advanced += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | return *token_type == self._peek().kind [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] 403 - return *token_type == self._peek().kind [INFO] [stdout] 403 + *token_type == self._peek().kind [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast_printer.rs:82:40 [INFO] [stdout] | [INFO] [stdout] 82 | exprs.push(walk_stmt(self, &statement)) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `statement` [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/ast_printer.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | return walk_expr(self, expr) [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] 89 - return walk_expr(self, expr) [INFO] [stdout] 89 + walk_expr(self, expr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast_printer.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | s.push_str("("); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s.push('(')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast_printer.rs:99:13 [INFO] [stdout] | [INFO] [stdout] 99 | s.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast_printer.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | s.push_str(")"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s.push(')')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | return self.evaluate(&e.right); [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] 61 - return self.evaluate(&e.right); [INFO] [stdout] 61 + self.evaluate(&e.right) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | return self.evaluate(&e.expression) [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] 135 - return self.evaluate(&e.expression) [INFO] [stdout] 135 + self.evaluate(&e.expression) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/ast_printer.rs:11:13 [INFO] [stdout] | [INFO] [stdout] 11 | s = s + i.as_str(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `s += i.as_str()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/ast_printer.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | e.else_branch.as_ref().map(|e| s = format!("{} else {}", s, walk_stmt(self, &e))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 31 - e.else_branch.as_ref().map(|e| s = format!("{} else {}", s, walk_stmt(self, &e))); [INFO] [stdout] 31 + if let Some(e) = e.else_branch.as_ref() { ... } [INFO] [stdout] | [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/interpreter.rs:229:13 [INFO] [stdout] | [INFO] [stdout] 229 | / match self.execute(&stmt) { [INFO] [stdout] 230 | | Err(e) => { [INFO] [stdout] 231 | | lox_error(&e.token, &e.message) [INFO] [stdout] 232 | | }, [INFO] [stdout] 233 | | _ => (), [INFO] [stdout] 234 | | } [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] 229 ~ if let Err(e) = self.execute(&stmt) { [INFO] [stdout] 230 + lox_error(&e.token, &e.message) [INFO] [stdout] 231 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter.rs:239:9 [INFO] [stdout] | [INFO] [stdout] 239 | return walk_stmt(self, stmt) [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] 239 - return walk_stmt(self, stmt) [INFO] [stdout] 239 + walk_stmt(self, stmt) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interpreter.rs:242:41 [INFO] [stdout] | [INFO] [stdout] 242 | fn execute_block(&self, statements: &Vec, environment: Rc) -> Result<(), RuntimeError>{ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 242 - fn execute_block(&self, statements: &Vec, environment: Rc) -> Result<(), RuntimeError>{ [INFO] [stdout] 242 + fn execute_block(&self, statements: &[Stmt], environment: Rc) -> Result<(), RuntimeError>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/interpreter.rs:277:35 [INFO] [stdout] | [INFO] [stdout] 277 | Object::Boolean(i) => i.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*i` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast_printer.rs:31:85 [INFO] [stdout] | [INFO] [stdout] 31 | e.else_branch.as_ref().map(|e| s = format!("{} else {}", s, walk_stmt(self, &e))); [INFO] [stdout] | ^^ help: change this to: `e` [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/ast_printer.rs:82:40 [INFO] [stdout] | [INFO] [stdout] 82 | exprs.push(walk_stmt(self, &statement)) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `statement` [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/ast_printer.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | return walk_expr(self, expr) [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] 89 - return walk_expr(self, expr) [INFO] [stdout] 89 + walk_expr(self, expr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast_printer.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | s.push_str("("); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s.push('(')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast_printer.rs:99:13 [INFO] [stdout] | [INFO] [stdout] 99 | s.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast_printer.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | s.push_str(")"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s.push(')')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | return self.evaluate(&e.right); [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] 61 - return self.evaluate(&e.right); [INFO] [stdout] 61 + self.evaluate(&e.right) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/main.rs:103:17 [INFO] [stdout] | [INFO] [stdout] 103 | buffer.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `buffer.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | return self.evaluate(&e.expression) [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] 135 - return self.evaluate(&e.expression) [INFO] [stdout] 135 + self.evaluate(&e.expression) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:127:9 [INFO] [stdout] | [INFO] [stdout] 127 | return [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] 126 - } else { [INFO] [stdout] 127 - return [INFO] [stdout] 126 + } else { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/main.rs:158:13 [INFO] [stdout] | [INFO] [stdout] 158 | new_s.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `new_s.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [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/interpreter.rs:229:13 [INFO] [stdout] | [INFO] [stdout] 229 | / match self.execute(&stmt) { [INFO] [stdout] 230 | | Err(e) => { [INFO] [stdout] 231 | | lox_error(&e.token, &e.message) [INFO] [stdout] 232 | | }, [INFO] [stdout] 233 | | _ => (), [INFO] [stdout] 234 | | } [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] 229 ~ if let Err(e) = self.execute(&stmt) { [INFO] [stdout] 230 + lox_error(&e.token, &e.message) [INFO] [stdout] 231 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter.rs:239:9 [INFO] [stdout] | [INFO] [stdout] 239 | return walk_stmt(self, stmt) [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] 239 - return walk_stmt(self, stmt) [INFO] [stdout] 239 + walk_stmt(self, stmt) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interpreter.rs:242:41 [INFO] [stdout] | [INFO] [stdout] 242 | fn execute_block(&self, statements: &Vec, environment: Rc) -> Result<(), RuntimeError>{ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 242 - fn execute_block(&self, statements: &Vec, environment: Rc) -> Result<(), RuntimeError>{ [INFO] [stdout] 242 + fn execute_block(&self, statements: &[Stmt], environment: Rc) -> Result<(), RuntimeError>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/interpreter.rs:277:35 [INFO] [stdout] | [INFO] [stdout] 277 | Object::Boolean(i) => i.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*i` [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: unused `std::result::Result` that must be used [INFO] [stdout] --> src/interpreter.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | self.execute(&stmt.then_branch); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 170 | let _ = self.execute(&stmt.then_branch); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/main.rs:103:17 [INFO] [stdout] | [INFO] [stdout] 103 | buffer.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `buffer.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:127:9 [INFO] [stdout] | [INFO] [stdout] 127 | return [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] 126 - } else { [INFO] [stdout] 127 - return [INFO] [stdout] 126 + } else { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/main.rs:158:13 [INFO] [stdout] | [INFO] [stdout] 158 | new_s.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `new_s.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/interpreter.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | self.execute(&stmt.then_branch); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 170 | let _ = self.execute(&stmt.then_branch); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s [INFO] running `Command { std: "docker" "inspect" "e8a9de34ade810122617040868fc8e1e92ac6beb594d4af175db3dfab0284a5a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e8a9de34ade810122617040868fc8e1e92ac6beb594d4af175db3dfab0284a5a", kill_on_drop: false }` [INFO] [stdout] e8a9de34ade810122617040868fc8e1e92ac6beb594d4af175db3dfab0284a5a