[INFO] cloning repository https://github.com/zhouxs1023/rslox
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zhouxs1023/rslox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhouxs1023%2Frslox", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhouxs1023%2Frslox'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 51aae01d9734b4cead139da97951f2c5ef7b2344
[INFO] checking zhouxs1023/rslox against a5689b034ad287112f709693384a37f1377eb9cc for pr-129249-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhouxs1023%2Frslox" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/zhouxs1023/rslox
[INFO] finished tweaking git repo https://github.com/zhouxs1023/rslox
[INFO] tweaked toml for git repo https://github.com/zhouxs1023/rslox written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zhouxs1023/rslox on toolchain a5689b034ad287112f709693384a37f1377eb9cc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zhouxs1023/rslox already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21
[INFO] running `Command { std: "docker" "start" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking rslox v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `fun`
[INFO] [stdout]   --> src/value.rs:32:25
[INFO] [stdout]    |
[INFO] [stdout] 32 |         Value::Function(fun) => print!("ObjFunction: {}", "(fun)"),
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_fun`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]   --> src/value.rs:42:28
[INFO] [stdout]    |
[INFO] [stdout] 42 |             Self::Function(func) => write!(f, "{}", "(func)"),
[INFO] [stdout]    |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_func`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:404:26
[INFO] [stdout]     |
[INFO] [stdout] 404 |     fn binary(&mut self, can_assign: bool) {
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:424:27
[INFO] [stdout]     |
[INFO] [stdout] 424 |     fn literal(&mut self, can_assign: bool) {
[INFO] [stdout]     |                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:433:28
[INFO] [stdout]     |
[INFO] [stdout] 433 |     fn grouping(&mut self, can_assign: bool) {
[INFO] [stdout]     |                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:438:26
[INFO] [stdout]     |
[INFO] [stdout] 438 |     fn number(&mut self, can_assign: bool) {
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:443:22
[INFO] [stdout]     |
[INFO] [stdout] 443 |     fn or(&mut self, can_assign: bool) {
[INFO] [stdout]     |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:454:26
[INFO] [stdout]     |
[INFO] [stdout] 454 |     fn string(&mut self, can_assign: bool) {
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:483:25
[INFO] [stdout]     |
[INFO] [stdout] 483 |     fn unary(&mut self, can_assign: bool) {
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:581:23
[INFO] [stdout]     |
[INFO] [stdout] 581 |     fn and(&mut self, can_assign: bool) {
[INFO] [stdout]     |                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Function` is never constructed
[INFO] [stdout]   --> src/compiler.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | enum FunctionType {
[INFO] [stdout]    |      ------------ variant in this enum
[INFO] [stdout] 78 |     Function,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fn_type` is never read
[INFO] [stdout]   --> src/compiler.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct Compiler<'src> {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 83 |     pub function: Function,
[INFO] [stdout] 84 |     fn_type: FunctionType,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]   --> src/chunk.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |         self.code[offset].into()
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 97 -         self.code[offset].into()
[INFO] [stdout] 97 +         self.code[offset]
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 97 -         self.code[offset].into()
[INFO] [stdout] 97 +         <u8 as Into<_>>::into(self.code[offset])
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/chunk.rs:166:32
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 166 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 166 +         let constant_idx: u8 = self.code[offset + 1];
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 166 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 166 +         let constant_idx: u8 = <u8 as Into<_>>::into(self.code[offset + 1]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/chunk.rs:183:32
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 183 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 183 +         let constant_idx: u8 = self.code[offset + 1];
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 183 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 183 +         let constant_idx: u8 = <u8 as Into<_>>::into(self.code[offset + 1]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/compiler.rs:365:45
[INFO] [stdout]     |
[INFO] [stdout] 365 |         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8).into();
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 365 -         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8).into();
[INFO] [stdout] 365 +         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8);
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 365 -         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8).into();
[INFO] [stdout] 365 +         self.current_chunk().code[offset] = <u8 as Into<_>>::into((((jump >> 8) & 0xff) as u8));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/compiler.rs:366:49
[INFO] [stdout]     |
[INFO] [stdout] 366 |         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8).into();
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 366 -         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8).into();
[INFO] [stdout] 366 +         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8);
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 366 -         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8).into();
[INFO] [stdout] 366 +         self.current_chunk().code[offset + 1] = <u8 as Into<_>>::into(((jump & 0xff) as u8));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fun`
[INFO] [stdout]   --> src/value.rs:32:25
[INFO] [stdout]    |
[INFO] [stdout] 32 |         Value::Function(fun) => print!("ObjFunction: {}", "(fun)"),
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_fun`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]   --> src/value.rs:42:28
[INFO] [stdout]    |
[INFO] [stdout] 42 |             Self::Function(func) => write!(f, "{}", "(func)"),
[INFO] [stdout]    |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_func`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:410:48
[INFO] [stdout]     |
[INFO] [stdout] 410 |             TokenType::Plus  => self.emit_byte(OpCode::OpAdd.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 410 -             TokenType::Plus  => self.emit_byte(OpCode::OpAdd.into()),
[INFO] [stdout] 410 +             TokenType::Plus  => self.emit_byte(OpCode::OpAdd),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 410 -             TokenType::Plus  => self.emit_byte(OpCode::OpAdd.into()),
[INFO] [stdout] 410 +             TokenType::Plus  => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpAdd)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:411:48
[INFO] [stdout]     |
[INFO] [stdout] 411 |             TokenType::Minus => self.emit_byte(OpCode::OpSubtract.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 411 -             TokenType::Minus => self.emit_byte(OpCode::OpSubtract.into()),
[INFO] [stdout] 411 +             TokenType::Minus => self.emit_byte(OpCode::OpSubtract),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 411 -             TokenType::Minus => self.emit_byte(OpCode::OpSubtract.into()),
[INFO] [stdout] 411 +             TokenType::Minus => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpSubtract)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:412:48
[INFO] [stdout]     |
[INFO] [stdout] 412 |             TokenType::Star  => self.emit_byte(OpCode::OpMultiply.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 412 -             TokenType::Star  => self.emit_byte(OpCode::OpMultiply.into()),
[INFO] [stdout] 412 +             TokenType::Star  => self.emit_byte(OpCode::OpMultiply),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 412 -             TokenType::Star  => self.emit_byte(OpCode::OpMultiply.into()),
[INFO] [stdout] 412 +             TokenType::Star  => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpMultiply)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:413:48
[INFO] [stdout]     |
[INFO] [stdout] 413 |             TokenType::Slash => self.emit_byte(OpCode::OpDivide.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 413 -             TokenType::Slash => self.emit_byte(OpCode::OpDivide.into()),
[INFO] [stdout] 413 +             TokenType::Slash => self.emit_byte(OpCode::OpDivide),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 413 -             TokenType::Slash => self.emit_byte(OpCode::OpDivide.into()),
[INFO] [stdout] 413 +             TokenType::Slash => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpDivide)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:415:53
[INFO] [stdout]     |
[INFO] [stdout] 415 |             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual.into()),
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 415 -             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual.into()),
[INFO] [stdout] 415 +             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 415 -             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual.into()),
[INFO] [stdout] 415 +             TokenType::EqualEqual => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpEqual)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:416:50
[INFO] [stdout]     |
[INFO] [stdout] 416 |             TokenType::Greater => self.emit_byte(OpCode::OpGreater.into()),
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 416 -             TokenType::Greater => self.emit_byte(OpCode::OpGreater.into()),
[INFO] [stdout] 416 +             TokenType::Greater => self.emit_byte(OpCode::OpGreater),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 416 -             TokenType::Greater => self.emit_byte(OpCode::OpGreater.into()),
[INFO] [stdout] 416 +             TokenType::Greater => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpGreater)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:418:47
[INFO] [stdout]     |
[INFO] [stdout] 418 |             TokenType::Less => self.emit_byte(OpCode::OpLess.into()),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 418 -             TokenType::Less => self.emit_byte(OpCode::OpLess.into()),
[INFO] [stdout] 418 +             TokenType::Less => self.emit_byte(OpCode::OpLess),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 418 -             TokenType::Less => self.emit_byte(OpCode::OpLess.into()),
[INFO] [stdout] 418 +             TokenType::Less => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpLess)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:491:48
[INFO] [stdout]     |
[INFO] [stdout] 491 |             TokenType::Minus => self.emit_byte(OpCode::OpNegate.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 491 -             TokenType::Minus => self.emit_byte(OpCode::OpNegate.into()),
[INFO] [stdout] 491 +             TokenType::Minus => self.emit_byte(OpCode::OpNegate),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 491 -             TokenType::Minus => self.emit_byte(OpCode::OpNegate.into()),
[INFO] [stdout] 491 +             TokenType::Minus => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpNegate)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:492:48
[INFO] [stdout]     |
[INFO] [stdout] 492 |             TokenType::Bang  => self.emit_byte(OpCode::OpNot.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 492 -             TokenType::Bang  => self.emit_byte(OpCode::OpNot.into()),
[INFO] [stdout] 492 +             TokenType::Bang  => self.emit_byte(OpCode::OpNot),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 492 -             TokenType::Bang  => self.emit_byte(OpCode::OpNot.into()),
[INFO] [stdout] 492 +             TokenType::Bang  => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpNot)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/scanner.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(source: &str) -> Scanner {
[INFO] [stdout]   |                        ^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                        |
[INFO] [stdout]   |                        the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(source: &str) -> Scanner<'_> {
[INFO] [stdout]   |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:404:26
[INFO] [stdout]     |
[INFO] [stdout] 404 |     fn binary(&mut self, can_assign: bool) {
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:424:27
[INFO] [stdout]     |
[INFO] [stdout] 424 |     fn literal(&mut self, can_assign: bool) {
[INFO] [stdout]     |                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:433:28
[INFO] [stdout]     |
[INFO] [stdout] 433 |     fn grouping(&mut self, can_assign: bool) {
[INFO] [stdout]     |                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:438:26
[INFO] [stdout]     |
[INFO] [stdout] 438 |     fn number(&mut self, can_assign: bool) {
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:443:22
[INFO] [stdout]     |
[INFO] [stdout] 443 |     fn or(&mut self, can_assign: bool) {
[INFO] [stdout]     |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:454:26
[INFO] [stdout]     |
[INFO] [stdout] 454 |     fn string(&mut self, can_assign: bool) {
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:483:25
[INFO] [stdout]     |
[INFO] [stdout] 483 |     fn unary(&mut self, can_assign: bool) {
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_assign`
[INFO] [stdout]    --> src/compiler.rs:581:23
[INFO] [stdout]     |
[INFO] [stdout] 581 |     fn and(&mut self, can_assign: bool) {
[INFO] [stdout]     |                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_assign`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rslox` (bin "rslox" test) due to 14 previous errors; 13 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variant `Function` is never constructed
[INFO] [stdout]   --> src/compiler.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | enum FunctionType {
[INFO] [stdout]    |      ------------ variant in this enum
[INFO] [stdout] 78 |     Function,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fn_type` is never read
[INFO] [stdout]   --> src/compiler.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct Compiler<'src> {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 83 |     pub function: Function,
[INFO] [stdout] 84 |     fn_type: FunctionType,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]   --> src/chunk.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |         self.code[offset].into()
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 97 -         self.code[offset].into()
[INFO] [stdout] 97 +         self.code[offset]
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 97 -         self.code[offset].into()
[INFO] [stdout] 97 +         <u8 as Into<_>>::into(self.code[offset])
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/chunk.rs:166:32
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 166 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 166 +         let constant_idx: u8 = self.code[offset + 1];
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 166 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 166 +         let constant_idx: u8 = <u8 as Into<_>>::into(self.code[offset + 1]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/chunk.rs:183:32
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 183 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 183 +         let constant_idx: u8 = self.code[offset + 1];
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 183 -         let constant_idx: u8 = self.code[offset + 1].into();
[INFO] [stdout] 183 +         let constant_idx: u8 = <u8 as Into<_>>::into(self.code[offset + 1]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/compiler.rs:365:45
[INFO] [stdout]     |
[INFO] [stdout] 365 |         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8).into();
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 365 -         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8).into();
[INFO] [stdout] 365 +         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8);
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 365 -         self.current_chunk().code[offset] = (((jump >> 8) & 0xff) as u8).into();
[INFO] [stdout] 365 +         self.current_chunk().code[offset] = <u8 as Into<_>>::into((((jump >> 8) & 0xff) as u8));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u8`
[INFO] [stdout]    --> src/compiler.rs:366:49
[INFO] [stdout]     |
[INFO] [stdout] 366 |         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8).into();
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 366 -         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8).into();
[INFO] [stdout] 366 +         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8);
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 366 -         self.current_chunk().code[offset + 1] = ((jump & 0xff) as u8).into();
[INFO] [stdout] 366 +         self.current_chunk().code[offset + 1] = <u8 as Into<_>>::into(((jump & 0xff) as u8));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:410:48
[INFO] [stdout]     |
[INFO] [stdout] 410 |             TokenType::Plus  => self.emit_byte(OpCode::OpAdd.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 410 -             TokenType::Plus  => self.emit_byte(OpCode::OpAdd.into()),
[INFO] [stdout] 410 +             TokenType::Plus  => self.emit_byte(OpCode::OpAdd),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 410 -             TokenType::Plus  => self.emit_byte(OpCode::OpAdd.into()),
[INFO] [stdout] 410 +             TokenType::Plus  => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpAdd)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:411:48
[INFO] [stdout]     |
[INFO] [stdout] 411 |             TokenType::Minus => self.emit_byte(OpCode::OpSubtract.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 411 -             TokenType::Minus => self.emit_byte(OpCode::OpSubtract.into()),
[INFO] [stdout] 411 +             TokenType::Minus => self.emit_byte(OpCode::OpSubtract),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 411 -             TokenType::Minus => self.emit_byte(OpCode::OpSubtract.into()),
[INFO] [stdout] 411 +             TokenType::Minus => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpSubtract)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:412:48
[INFO] [stdout]     |
[INFO] [stdout] 412 |             TokenType::Star  => self.emit_byte(OpCode::OpMultiply.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 412 -             TokenType::Star  => self.emit_byte(OpCode::OpMultiply.into()),
[INFO] [stdout] 412 +             TokenType::Star  => self.emit_byte(OpCode::OpMultiply),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 412 -             TokenType::Star  => self.emit_byte(OpCode::OpMultiply.into()),
[INFO] [stdout] 412 +             TokenType::Star  => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpMultiply)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:413:48
[INFO] [stdout]     |
[INFO] [stdout] 413 |             TokenType::Slash => self.emit_byte(OpCode::OpDivide.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 413 -             TokenType::Slash => self.emit_byte(OpCode::OpDivide.into()),
[INFO] [stdout] 413 +             TokenType::Slash => self.emit_byte(OpCode::OpDivide),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 413 -             TokenType::Slash => self.emit_byte(OpCode::OpDivide.into()),
[INFO] [stdout] 413 +             TokenType::Slash => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpDivide)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:415:53
[INFO] [stdout]     |
[INFO] [stdout] 415 |             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual.into()),
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 415 -             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual.into()),
[INFO] [stdout] 415 +             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 415 -             TokenType::EqualEqual => self.emit_byte(OpCode::OpEqual.into()),
[INFO] [stdout] 415 +             TokenType::EqualEqual => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpEqual)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:416:50
[INFO] [stdout]     |
[INFO] [stdout] 416 |             TokenType::Greater => self.emit_byte(OpCode::OpGreater.into()),
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 416 -             TokenType::Greater => self.emit_byte(OpCode::OpGreater.into()),
[INFO] [stdout] 416 +             TokenType::Greater => self.emit_byte(OpCode::OpGreater),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 416 -             TokenType::Greater => self.emit_byte(OpCode::OpGreater.into()),
[INFO] [stdout] 416 +             TokenType::Greater => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpGreater)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:418:47
[INFO] [stdout]     |
[INFO] [stdout] 418 |             TokenType::Less => self.emit_byte(OpCode::OpLess.into()),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 418 -             TokenType::Less => self.emit_byte(OpCode::OpLess.into()),
[INFO] [stdout] 418 +             TokenType::Less => self.emit_byte(OpCode::OpLess),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 418 -             TokenType::Less => self.emit_byte(OpCode::OpLess.into()),
[INFO] [stdout] 418 +             TokenType::Less => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpLess)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:491:48
[INFO] [stdout]     |
[INFO] [stdout] 491 |             TokenType::Minus => self.emit_byte(OpCode::OpNegate.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 491 -             TokenType::Minus => self.emit_byte(OpCode::OpNegate.into()),
[INFO] [stdout] 491 +             TokenType::Minus => self.emit_byte(OpCode::OpNegate),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 491 -             TokenType::Minus => self.emit_byte(OpCode::OpNegate.into()),
[INFO] [stdout] 491 +             TokenType::Minus => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpNegate)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `OpCode`
[INFO] [stdout]    --> src/compiler.rs:492:48
[INFO] [stdout]     |
[INFO] [stdout] 492 |             TokenType::Bang  => self.emit_byte(OpCode::OpNot.into()),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 492 -             TokenType::Bang  => self.emit_byte(OpCode::OpNot.into()),
[INFO] [stdout] 492 +             TokenType::Bang  => self.emit_byte(OpCode::OpNot),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 492 -             TokenType::Bang  => self.emit_byte(OpCode::OpNot.into()),
[INFO] [stdout] 492 +             TokenType::Bang  => self.emit_byte(<OpCode as Into<_>>::into(OpCode::OpNot)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/scanner.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(source: &str) -> Scanner {
[INFO] [stdout]   |                        ^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                        |
[INFO] [stdout]   |                        the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(source: &str) -> Scanner<'_> {
[INFO] [stdout]   |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rslox` (bin "rslox") due to 14 previous errors; 13 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21", kill_on_drop: false }`
[INFO] [stdout] 29e9e6d596d13d17d3a7813fec4afa18bcd9107db8190a5c5790a7a692d4ea21
