[INFO] updating cached repository faizilham/ocha [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/faizilham/ocha [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/faizilham/ocha" "work/ex/clippy-test-run/sources/stable/gh/faizilham/ocha"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/faizilham/ocha'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/faizilham/ocha" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/faizilham/ocha"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/faizilham/ocha'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6ed78ff3c811568319b995edea90d26631ad5e07 [INFO] sha for GitHub repo faizilham/ocha: 6ed78ff3c811568319b995edea90d26631ad5e07 [INFO] validating manifest of faizilham/ocha on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of faizilham/ocha on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing faizilham/ocha [INFO] finished frobbing faizilham/ocha [INFO] frobbed toml for faizilham/ocha written to work/ex/clippy-test-run/sources/stable/gh/faizilham/ocha/Cargo.toml [INFO] started frobbing faizilham/ocha [INFO] finished frobbing faizilham/ocha [INFO] frobbed toml for faizilham/ocha written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/faizilham/ocha/Cargo.toml [INFO] crate faizilham/ocha has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting faizilham/ocha against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/faizilham/ocha:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 22eceeeb63a06c8ded312d665234de72f9729f16bb5b19c4659ac0843ebc69f6 [INFO] running `"docker" "start" "-a" "22eceeeb63a06c8ded312d665234de72f9729f16bb5b19c4659ac0843ebc69f6"` [INFO] [stderr] Checking ocha v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:329:79 [INFO] [stderr] | [INFO] [stderr] 329 | expr = create_expr(operator.line, ExprNode::Binary{left: expr, right, operator: operator}); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operator` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:444:22 [INFO] [stderr] | [INFO] [stderr] 444 | ParserState{ tokens: tokens, last_line: 1, loop_level: 0, func_level: 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `tokens` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:329:79 [INFO] [stderr] | [INFO] [stderr] 329 | expr = create_expr(operator.line, ExprNode::Binary{left: expr, right, operator: operator}); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operator` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:444:22 [INFO] [stderr] | [INFO] [stderr] 444 | ParserState{ tokens: tokens, last_line: 1, loop_level: 0, func_level: 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `tokens` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/builder/mod.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | index [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/builder/mod.rs:144:21 [INFO] [stderr] | [INFO] [stderr] 144 | let index = self.current_subprog.borrow_mut().emit(line, bytecode); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:214:9 [INFO] [stderr] | [INFO] [stderr] 214 | return LexerState { start: 0, current: 0, line: 1, source}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `LexerState { start: 0, current: 0, line: 1, source}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/lib.rs:67:60 [INFO] [stderr] | [INFO] [stderr] 67 | fn report_exception(io: &mut OchaIO, exception: Exception) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/lib.rs:72:67 [INFO] [stderr] | [INFO] [stderr] 72 | fn report_exceptions(io: &mut OchaIO, exceptions: Vec) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/builder/mod.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | index [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/builder/mod.rs:144:21 [INFO] [stderr] | [INFO] [stderr] 144 | let index = self.current_subprog.borrow_mut().emit(line, bytecode); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:214:9 [INFO] [stderr] | [INFO] [stderr] 214 | return LexerState { start: 0, current: 0, line: 1, source}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `LexerState { start: 0, current: 0, line: 1, source}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/lib.rs:67:60 [INFO] [stderr] | [INFO] [stderr] 67 | fn report_exception(io: &mut OchaIO, exception: Exception) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/lib.rs:72:67 [INFO] [stderr] | [INFO] [stderr] 72 | fn report_exceptions(io: &mut OchaIO, exceptions: Vec) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:24:38 [INFO] [stderr] | [INFO] [stderr] 24 | fn visit_binary(&mut self, left: &Box, operator: &Token, right: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:24:75 [INFO] [stderr] | [INFO] [stderr] 24 | fn visit_binary(&mut self, left: &Box, operator: &Token, right: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:25:42 [INFO] [stderr] | [INFO] [stderr] 25 | fn visit_funccall(&mut self, callee: &Box, args: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/expr.rs:25:60 [INFO] [stderr] | [INFO] [stderr] 25 | fn visit_funccall(&mut self, callee: &Box, args: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:26:37 [INFO] [stderr] | [INFO] [stderr] 26 | fn visit_get(&mut self, callee: &Box, operator: &Token, member: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:26:75 [INFO] [stderr] | [INFO] [stderr] 26 | fn visit_get(&mut self, callee: &Box, operator: &Token, member: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:27:40 [INFO] [stderr] | [INFO] [stderr] 27 | fn visit_grouping(&mut self, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/expr.rs:29:41 [INFO] [stderr] | [INFO] [stderr] 29 | fn visit_listinit(&mut self, exprs: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:30:55 [INFO] [stderr] | [INFO] [stderr] 30 | fn visit_unary(&mut self, operator: &Token, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:31:44 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_ternary(&mut self, condition: &Box, true_branch: &Box, false_branch: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:31:69 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_ternary(&mut self, condition: &Box, true_branch: &Box, false_branch: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:31:95 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_ternary(&mut self, condition: &Box, true_branch: &Box, false_branch: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:39:53 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn accept>(expr: &Box, visitor: &mut Visitor) -> T { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:26:56 [INFO] [stderr] | [INFO] [stderr] 26 | fn visit_assignment(&mut self, name: &Token, expr: &Box, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:27:37 [INFO] [stderr] | [INFO] [stderr] 27 | fn visit_block(&mut self, body: &Vec>, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:29:42 [INFO] [stderr] | [INFO] [stderr] 29 | fn visit_expression(&mut self, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:30:54 [INFO] [stderr] | [INFO] [stderr] 30 | fn visit_funcdecl(&mut self, name: &Token, args: &Vec, body: &Vec>, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:30:73 [INFO] [stderr] | [INFO] [stderr] 30 | fn visit_funcdecl(&mut self, name: &Token, args: &Vec, body: &Vec>, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:31:39 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_if(&mut self, condition: &Box, true_branch: &Box, false_branch: &Option>) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:31:64 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_if(&mut self, condition: &Box, true_branch: &Box, false_branch: &Option>) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:32:38 [INFO] [stderr] | [INFO] [stderr] 32 | fn visit_print(&mut self, exprs: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:34:39 [INFO] [stderr] | [INFO] [stderr] 34 | fn visit_set(&mut self, get_expr: &Box, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:34:57 [INFO] [stderr] | [INFO] [stderr] 34 | fn visit_set(&mut self, get_expr: &Box, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:35:53 [INFO] [stderr] | [INFO] [stderr] 35 | fn visit_vardecl(&mut self, name: &Token, expr: &Box, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:36:42 [INFO] [stderr] | [INFO] [stderr] 36 | fn visit_while(&mut self, condition: &Box, body: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:36:60 [INFO] [stderr] | [INFO] [stderr] 36 | fn visit_while(&mut self, condition: &Box, body: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:43:53 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn accept>(stmt: &Box, visitor: &mut Visitor) -> T { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builder/mod.rs:27:8 [INFO] [stderr] | [INFO] [stderr] 27 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in blocks.drain(..).enumerate()` or similar iterators [INFO] [stderr] --> src/builder/mod.rs:60:15 [INFO] [stderr] | [INFO] [stderr] 60 | for rf in blocks.drain(..) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/builder/mod.rs:123:34 [INFO] [stderr] | [INFO] [stderr] 123 | fn generate(&mut self, stmt: &Box) -> StmtResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/builder/mod.rs:128:39 [INFO] [stderr] | [INFO] [stderr] 128 | fn generate_expr(&mut self, expr: &Box) -> ExprResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexer.rs:22:8 [INFO] [stderr] | [INFO] [stderr] 22 | if errors.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lexer.rs:212:29 [INFO] [stderr] | [INFO] [stderr] 212 | fn new (source_string : &String) -> LexerState{ [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/program_data.rs:57:24 [INFO] [stderr] | [INFO] [stderr] 57 | let last = self.data.get_mut(len - 1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.data[len - 1]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:37:8 [INFO] [stderr] | [INFO] [stderr] 37 | if errors.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:448:9 [INFO] [stderr] | [INFO] [stderr] 448 | self.tokens.len() == 0 || self.peek_eq(EOF) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/parser.rs:491:16 [INFO] [stderr] | [INFO] [stderr] 491 | if let Some(_) = self.get_matches(token_type) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 492 | | true [INFO] [stderr] 493 | | } else { [INFO] [stderr] 494 | | false [INFO] [stderr] 495 | | } [INFO] [stderr] | |_________- help: try this: `if self.get_matches(token_type).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/resolver/mod.rs:91:28 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn resolve(statements: &Vec>) -> Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/resolver/mod.rs:101:8 [INFO] [stderr] | [INFO] [stderr] 101 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/resolver/mod.rs:138:30 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn to_resolver_info (self) -> ResolverInfo { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resolver/mod.rs:145:33 [INFO] [stderr] | [INFO] [stderr] 145 | fn resolve(&mut self, stmt: &Box) -> StmtResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resolver/mod.rs:150:38 [INFO] [stderr] | [INFO] [stderr] 150 | fn resolve_expr(&mut self, expr: &Box) -> ExprResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/resolver/mod.rs:237:34 [INFO] [stderr] | [INFO] [stderr] 237 | fn add_args(&mut self, args: &Vec) -> Result<(), Exception> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in args.enumerate()` or similar iterators [INFO] [stderr] --> src/resolver/mod.rs:245:20 [INFO] [stderr] | [INFO] [stderr] 245 | for arg in args { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/resolver/mod.rs:370:25 [INFO] [stderr] | [INFO] [stderr] 370 | let scope = self.scopes.get_mut(scope_id).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[scope_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/resolver/mod.rs:415:33 [INFO] [stderr] | [INFO] [stderr] 415 | let function_data = self.functions.get_mut(func_id).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.functions[func_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/vm.rs:386:21 [INFO] [stderr] | [INFO] [stderr] 386 | / let mut env = None; [INFO] [stderr] 387 | | [INFO] [stderr] 388 | | if !self.stack_env_empty() { [INFO] [stderr] 389 | | env = Some(self.top_env().clone()); [INFO] [stderr] 390 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let env = if !self.stack_env_empty() { Some(self.top_env().clone()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/vm.rs:459:21 [INFO] [stderr] | [INFO] [stderr] 459 | / let mut parent = None; [INFO] [stderr] 460 | | [INFO] [stderr] 461 | | if !self.stack_env_empty() { [INFO] [stderr] 462 | | parent = Some(self.top_env().clone()); [INFO] [stderr] 463 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let parent = if !self.stack_env_empty() { Some(self.top_env().clone()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:628:9 [INFO] [stderr] | [INFO] [stderr] 628 | self.env_stack.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.env_stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib.rs:42:16 [INFO] [stderr] | [INFO] [stderr] 42 | if let Ok(_) = file.read_to_string(&mut buffer) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 43 | | return Ok(buffer) [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________- help: try this: `if file.read_to_string(&mut buffer).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:24:38 [INFO] [stderr] | [INFO] [stderr] 24 | fn visit_binary(&mut self, left: &Box, operator: &Token, right: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:24:75 [INFO] [stderr] | [INFO] [stderr] 24 | fn visit_binary(&mut self, left: &Box, operator: &Token, right: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:25:42 [INFO] [stderr] | [INFO] [stderr] 25 | fn visit_funccall(&mut self, callee: &Box, args: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/expr.rs:25:60 [INFO] [stderr] | [INFO] [stderr] 25 | fn visit_funccall(&mut self, callee: &Box, args: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:26:37 [INFO] [stderr] | [INFO] [stderr] 26 | fn visit_get(&mut self, callee: &Box, operator: &Token, member: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:26:75 [INFO] [stderr] | [INFO] [stderr] 26 | fn visit_get(&mut self, callee: &Box, operator: &Token, member: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:27:40 [INFO] [stderr] | [INFO] [stderr] 27 | fn visit_grouping(&mut self, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/expr.rs:29:41 [INFO] [stderr] | [INFO] [stderr] 29 | fn visit_listinit(&mut self, exprs: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:30:55 [INFO] [stderr] | [INFO] [stderr] 30 | fn visit_unary(&mut self, operator: &Token, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:31:44 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_ternary(&mut self, condition: &Box, true_branch: &Box, false_branch: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:31:69 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_ternary(&mut self, condition: &Box, true_branch: &Box, false_branch: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:31:95 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_ternary(&mut self, condition: &Box, true_branch: &Box, false_branch: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/expr.rs:39:53 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn accept>(expr: &Box, visitor: &mut Visitor) -> T { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:26:56 [INFO] [stderr] | [INFO] [stderr] 26 | fn visit_assignment(&mut self, name: &Token, expr: &Box, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:27:37 [INFO] [stderr] | [INFO] [stderr] 27 | fn visit_block(&mut self, body: &Vec>, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:29:42 [INFO] [stderr] | [INFO] [stderr] 29 | fn visit_expression(&mut self, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:30:54 [INFO] [stderr] | [INFO] [stderr] 30 | fn visit_funcdecl(&mut self, name: &Token, args: &Vec, body: &Vec>, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:30:73 [INFO] [stderr] | [INFO] [stderr] 30 | fn visit_funcdecl(&mut self, name: &Token, args: &Vec, body: &Vec>, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:31:39 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_if(&mut self, condition: &Box, true_branch: &Box, false_branch: &Option>) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:31:64 [INFO] [stderr] | [INFO] [stderr] 31 | fn visit_if(&mut self, condition: &Box, true_branch: &Box, false_branch: &Option>) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/stmt.rs:32:38 [INFO] [stderr] | [INFO] [stderr] 32 | fn visit_print(&mut self, exprs: &Vec>) -> T; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:34:39 [INFO] [stderr] | [INFO] [stderr] 34 | fn visit_set(&mut self, get_expr: &Box, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:34:57 [INFO] [stderr] | [INFO] [stderr] 34 | fn visit_set(&mut self, get_expr: &Box, expr: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:35:53 [INFO] [stderr] | [INFO] [stderr] 35 | fn visit_vardecl(&mut self, name: &Token, expr: &Box, id: &Cell) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:36:42 [INFO] [stderr] | [INFO] [stderr] 36 | fn visit_while(&mut self, condition: &Box, body: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:36:60 [INFO] [stderr] | [INFO] [stderr] 36 | fn visit_while(&mut self, condition: &Box, body: &Box) -> T; [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast/stmt.rs:43:53 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn accept>(stmt: &Box, visitor: &mut Visitor) -> T { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builder/mod.rs:27:8 [INFO] [stderr] | [INFO] [stderr] 27 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in blocks.drain(..).enumerate()` or similar iterators [INFO] [stderr] --> src/builder/mod.rs:60:15 [INFO] [stderr] | [INFO] [stderr] 60 | for rf in blocks.drain(..) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/builder/mod.rs:123:34 [INFO] [stderr] | [INFO] [stderr] 123 | fn generate(&mut self, stmt: &Box) -> StmtResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/builder/mod.rs:128:39 [INFO] [stderr] | [INFO] [stderr] 128 | fn generate_expr(&mut self, expr: &Box) -> ExprResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexer.rs:22:8 [INFO] [stderr] | [INFO] [stderr] 22 | if errors.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lexer.rs:212:29 [INFO] [stderr] | [INFO] [stderr] 212 | fn new (source_string : &String) -> LexerState{ [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/program_data.rs:57:24 [INFO] [stderr] | [INFO] [stderr] 57 | let last = self.data.get_mut(len - 1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.data[len - 1]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:37:8 [INFO] [stderr] | [INFO] [stderr] 37 | if errors.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:448:9 [INFO] [stderr] | [INFO] [stderr] 448 | self.tokens.len() == 0 || self.peek_eq(EOF) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/parser.rs:491:16 [INFO] [stderr] | [INFO] [stderr] 491 | if let Some(_) = self.get_matches(token_type) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 492 | | true [INFO] [stderr] 493 | | } else { [INFO] [stderr] 494 | | false [INFO] [stderr] 495 | | } [INFO] [stderr] | |_________- help: try this: `if self.get_matches(token_type).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/resolver/mod.rs:91:28 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn resolve(statements: &Vec>) -> Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/resolver/mod.rs:101:8 [INFO] [stderr] | [INFO] [stderr] 101 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/resolver/mod.rs:138:30 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn to_resolver_info (self) -> ResolverInfo { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resolver/mod.rs:145:33 [INFO] [stderr] | [INFO] [stderr] 145 | fn resolve(&mut self, stmt: &Box) -> StmtResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Stmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resolver/mod.rs:150:38 [INFO] [stderr] | [INFO] [stderr] 150 | fn resolve_expr(&mut self, expr: &Box) -> ExprResult { [INFO] [stderr] | ^^^^^^^^^^ help: try: `&Expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/resolver/mod.rs:237:34 [INFO] [stderr] | [INFO] [stderr] 237 | fn add_args(&mut self, args: &Vec) -> Result<(), Exception> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in args.enumerate()` or similar iterators [INFO] [stderr] --> src/resolver/mod.rs:245:20 [INFO] [stderr] | [INFO] [stderr] 245 | for arg in args { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/resolver/mod.rs:370:25 [INFO] [stderr] | [INFO] [stderr] 370 | let scope = self.scopes.get_mut(scope_id).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[scope_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/resolver/mod.rs:415:33 [INFO] [stderr] | [INFO] [stderr] 415 | let function_data = self.functions.get_mut(func_id).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.functions[func_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/vm.rs:386:21 [INFO] [stderr] | [INFO] [stderr] 386 | / let mut env = None; [INFO] [stderr] 387 | | [INFO] [stderr] 388 | | if !self.stack_env_empty() { [INFO] [stderr] 389 | | env = Some(self.top_env().clone()); [INFO] [stderr] 390 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let env = if !self.stack_env_empty() { Some(self.top_env().clone()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/vm.rs:459:21 [INFO] [stderr] | [INFO] [stderr] 459 | / let mut parent = None; [INFO] [stderr] 460 | | [INFO] [stderr] 461 | | if !self.stack_env_empty() { [INFO] [stderr] 462 | | parent = Some(self.top_env().clone()); [INFO] [stderr] 463 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let parent = if !self.stack_env_empty() { Some(self.top_env().clone()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:628:9 [INFO] [stderr] | [INFO] [stderr] 628 | self.env_stack.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.env_stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib.rs:42:16 [INFO] [stderr] | [INFO] [stderr] 42 | if let Ok(_) = file.read_to_string(&mut buffer) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 43 | | return Ok(buffer) [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________- help: try this: `if file.read_to_string(&mut buffer).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | result.push(String::from(line.unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `line.unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:232:31 [INFO] [stderr] | [INFO] [stderr] 232 | self.out.push(format!("{}", s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:235:35 [INFO] [stderr] | [INFO] [stderr] 235 | let current_str = self.out.get_mut(last).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.out[last]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 12 | | if let Err(_) = ocha::run_file(args[1].clone()){ [INFO] [stderr] 13 | | process::exit(1); [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 11 | } else if let Err(_) = ocha::run_file(args[1].clone()){ [INFO] [stderr] 12 | process::exit(1); [INFO] [stderr] 13 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/main.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | if let Err(_) = ocha::run_file(args[1].clone()){ [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 13 | | process::exit(1); [INFO] [stderr] 14 | | } [INFO] [stderr] | |_________- help: try this: `if ocha::run_file(args[1].clone()).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 12 | | if let Err(_) = ocha::run_file(args[1].clone()){ [INFO] [stderr] 13 | | process::exit(1); [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 11 | } else if let Err(_) = ocha::run_file(args[1].clone()){ [INFO] [stderr] 12 | process::exit(1); [INFO] [stderr] 13 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/main.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | if let Err(_) = ocha::run_file(args[1].clone()){ [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 13 | | process::exit(1); [INFO] [stderr] 14 | | } [INFO] [stderr] | |_________- help: try this: `if ocha::run_file(args[1].clone()).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.23s [INFO] running `"docker" "inspect" "22eceeeb63a06c8ded312d665234de72f9729f16bb5b19c4659ac0843ebc69f6"` [INFO] running `"docker" "rm" "-f" "22eceeeb63a06c8ded312d665234de72f9729f16bb5b19c4659ac0843ebc69f6"` [INFO] [stdout] 22eceeeb63a06c8ded312d665234de72f9729f16bb5b19c4659ac0843ebc69f6