[INFO] updating cached repository adamreeve/rlox [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/adamreeve/rlox [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/adamreeve/rlox" "work/ex/clippy-test-run/sources/stable/gh/adamreeve/rlox"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/adamreeve/rlox'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/adamreeve/rlox" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/adamreeve/rlox"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/adamreeve/rlox'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f53055fae9c9ecb993305470eab5207bed2bc30a [INFO] sha for GitHub repo adamreeve/rlox: f53055fae9c9ecb993305470eab5207bed2bc30a [INFO] validating manifest of adamreeve/rlox 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 adamreeve/rlox 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 adamreeve/rlox [INFO] finished frobbing adamreeve/rlox [INFO] frobbed toml for adamreeve/rlox written to work/ex/clippy-test-run/sources/stable/gh/adamreeve/rlox/Cargo.toml [INFO] started frobbing adamreeve/rlox [INFO] finished frobbing adamreeve/rlox [INFO] frobbed toml for adamreeve/rlox written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/adamreeve/rlox/Cargo.toml [INFO] crate adamreeve/rlox 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 adamreeve/rlox against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/adamreeve/rlox:/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] 4975c356b2ab04ec422cc36c9ff4887737f7fa7563e6e1a33e0763656db58ea9 [INFO] running `"docker" "start" "-a" "4975c356b2ab04ec422cc36c9ff4887737f7fa7563e6e1a33e0763656db58ea9"` [INFO] [stderr] Compiling enum-primitive-derive v0.1.2 [INFO] [stderr] Checking rlox v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/virtual_machine.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scanner.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/scanner.rs:437:13 [INFO] [stderr] | [INFO] [stderr] 437 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/scanner.rs:467:13 [INFO] [stderr] | [INFO] [stderr] 467 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/scanner.rs:490:13 [INFO] [stderr] | [INFO] [stderr] 490 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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: using `println!("")` [INFO] [stderr] --> src/main.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/virtual_machine.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scanner.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/scanner.rs:437:13 [INFO] [stderr] | [INFO] [stderr] 437 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/scanner.rs:467:13 [INFO] [stderr] | [INFO] [stderr] 467 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/scanner.rs:490:13 [INFO] [stderr] | [INFO] [stderr] 490 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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: using `println!("")` [INFO] [stderr] --> src/main.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unused import: `Read` [INFO] [stderr] --> src/chunk.rs:51:27 [INFO] [stderr] | [INFO] [stderr] 51 | use std::io::{Cursor, Read, Write}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/virtual_machine.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | return Err(InterpretError::RuntimeError(message.to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(InterpretError::RuntimeError(message.to_string()))` [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 return statement [INFO] [stderr] --> src/scanner.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | return self.error_token("Unexpected character"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.error_token("Unexpected character")` [INFO] [stderr] | [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 return statement [INFO] [stderr] --> src/scanner.rs:229:9 [INFO] [stderr] | [INFO] [stderr] 229 | return self.make_token(self.identifier_type()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.make_token(self.identifier_type())` [INFO] [stderr] | [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 return statement [INFO] [stderr] --> src/virtual_machine.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | return Err(InterpretError::RuntimeError(message.to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(InterpretError::RuntimeError(message.to_string()))` [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 return statement [INFO] [stderr] --> src/scanner.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | return self.error_token("Unexpected character"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.error_token("Unexpected character")` [INFO] [stderr] | [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 return statement [INFO] [stderr] --> src/scanner.rs:229:9 [INFO] [stderr] | [INFO] [stderr] 229 | return self.make_token(self.identifier_type()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.make_token(self.identifier_type())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/instructions.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | reader.read(&mut index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/instructions.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | writer.write(&[OpCode::Constant.as_byte(), self.constant_index as u8]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/instructions.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | writer.write(&[OpCode::ConstantLong.as_byte()]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/instructions.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | writer.write(&[self.op_code.as_byte()]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `run_length_encoding::RunLengthEncoded` [INFO] [stderr] --> src/run_length_encoding.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new() -> RunLengthEncoded { [INFO] [stderr] 31 | | RunLengthEncoded { [INFO] [stderr] 32 | | run_lengths: Vec::new() [INFO] [stderr] 33 | | } [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/value.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / match &self { [INFO] [stderr] 25 | | &Value::NumberValue(val) => val.clone(), [INFO] [stderr] 26 | | _ => panic!("Value is not a NumberValue"), [INFO] [stderr] 27 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 24 | match self { [INFO] [stderr] 25 | Value::NumberValue(val) => val.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/value.rs:25:41 [INFO] [stderr] | [INFO] [stderr] 25 | &Value::NumberValue(val) => val.clone(), [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*val` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/value.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match &self { [INFO] [stderr] 32 | | &Value::NumberValue(_) => true, [INFO] [stderr] 33 | | _ => false, [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 31 | match self { [INFO] [stderr] 32 | Value::NumberValue(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/value.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match &self { [INFO] [stderr] 41 | | &Value::NilValue => write!(f, "Nil"), [INFO] [stderr] 42 | | &Value::BoolValue(val) => write!(f, "Bool({})", val), [INFO] [stderr] 43 | | &Value::NumberValue(val) => write!(f, "Number({})", val), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 40 | match self { [INFO] [stderr] 41 | Value::NilValue => write!(f, "Nil"), [INFO] [stderr] 42 | Value::BoolValue(val) => write!(f, "Bool({})", val), [INFO] [stderr] 43 | Value::NumberValue(val) => write!(f, "Number({})", val), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/virtual_machine.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | self.cursor.read(&mut opcode_byte).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/virtual_machine.rs:164:66 [INFO] [stderr] | [INFO] [stderr] 164 | (Value::NumberValue(left), Value::NumberValue(right)) => left == right, [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(left - right).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/virtual_machine.rs:164:66 [INFO] [stderr] | [INFO] [stderr] 164 | (Value::NumberValue(left), Value::NumberValue(right)) => left == right, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/compiler.rs:183:54 [INFO] [stderr] | [INFO] [stderr] 183 | let instruction = SimpleInstruction::new(op_code.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*op_code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/scanner.rs:142:14 [INFO] [stderr] | [INFO] [stderr] 142 | .unwrap_or(remaining.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| remaining.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rlox`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/chunk.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | writer.write(&[self.value]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/chunk.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | assert_eq!(val, 42.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/chunk.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | assert_eq!(val, 42.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/chunk.rs:143:21 [INFO] [stderr] | [INFO] [stderr] 143 | assert_eq!(val, i as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/chunk.rs:143:21 [INFO] [stderr] | [INFO] [stderr] 143 | assert_eq!(val, i as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/instructions.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | reader.read(&mut index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/instructions.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | writer.write(&[OpCode::Constant.as_byte(), self.constant_index as u8]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/instructions.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | writer.write(&[OpCode::ConstantLong.as_byte()]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/instructions.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | writer.write(&[self.op_code.as_byte()]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `run_length_encoding::RunLengthEncoded` [INFO] [stderr] --> src/run_length_encoding.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new() -> RunLengthEncoded { [INFO] [stderr] 31 | | RunLengthEncoded { [INFO] [stderr] 32 | | run_lengths: Vec::new() [INFO] [stderr] 33 | | } [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/value.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / match &self { [INFO] [stderr] 25 | | &Value::NumberValue(val) => val.clone(), [INFO] [stderr] 26 | | _ => panic!("Value is not a NumberValue"), [INFO] [stderr] 27 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 24 | match self { [INFO] [stderr] 25 | Value::NumberValue(val) => val.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/value.rs:25:41 [INFO] [stderr] | [INFO] [stderr] 25 | &Value::NumberValue(val) => val.clone(), [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*val` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/value.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match &self { [INFO] [stderr] 32 | | &Value::NumberValue(_) => true, [INFO] [stderr] 33 | | _ => false, [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 31 | match self { [INFO] [stderr] 32 | Value::NumberValue(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/value.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match &self { [INFO] [stderr] 41 | | &Value::NilValue => write!(f, "Nil"), [INFO] [stderr] 42 | | &Value::BoolValue(val) => write!(f, "Bool({})", val), [INFO] [stderr] 43 | | &Value::NumberValue(val) => write!(f, "Number({})", val), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 40 | match self { [INFO] [stderr] 41 | Value::NilValue => write!(f, "Nil"), [INFO] [stderr] 42 | Value::BoolValue(val) => write!(f, "Bool({})", val), [INFO] [stderr] 43 | Value::NumberValue(val) => write!(f, "Number({})", val), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/virtual_machine.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | self.cursor.read(&mut opcode_byte).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/virtual_machine.rs:164:66 [INFO] [stderr] | [INFO] [stderr] 164 | (Value::NumberValue(left), Value::NumberValue(right)) => left == right, [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(left - right).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/virtual_machine.rs:164:66 [INFO] [stderr] | [INFO] [stderr] 164 | (Value::NumberValue(left), Value::NumberValue(right)) => left == right, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/compiler.rs:183:54 [INFO] [stderr] | [INFO] [stderr] 183 | let instruction = SimpleInstruction::new(op_code.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*op_code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/scanner.rs:142:14 [INFO] [stderr] | [INFO] [stderr] 142 | .unwrap_or(remaining.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| remaining.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rlox`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4975c356b2ab04ec422cc36c9ff4887737f7fa7563e6e1a33e0763656db58ea9"` [INFO] running `"docker" "rm" "-f" "4975c356b2ab04ec422cc36c9ff4887737f7fa7563e6e1a33e0763656db58ea9"` [INFO] [stdout] 4975c356b2ab04ec422cc36c9ff4887737f7fa7563e6e1a33e0763656db58ea9