[INFO] updating cached repository kogai/sqlite-practice [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/kogai/sqlite-practice [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/kogai/sqlite-practice" "work/ex/clippy-test-run/sources/stable/gh/kogai/sqlite-practice"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/kogai/sqlite-practice'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/kogai/sqlite-practice" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kogai/sqlite-practice"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kogai/sqlite-practice'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e6525844bcb8fb633415da6f78ea7bf88d2e13ad [INFO] sha for GitHub repo kogai/sqlite-practice: e6525844bcb8fb633415da6f78ea7bf88d2e13ad [INFO] validating manifest of kogai/sqlite-practice 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 kogai/sqlite-practice 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 kogai/sqlite-practice [INFO] finished frobbing kogai/sqlite-practice [INFO] frobbed toml for kogai/sqlite-practice written to work/ex/clippy-test-run/sources/stable/gh/kogai/sqlite-practice/Cargo.toml [INFO] started frobbing kogai/sqlite-practice [INFO] finished frobbing kogai/sqlite-practice [INFO] frobbed toml for kogai/sqlite-practice written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kogai/sqlite-practice/Cargo.toml [INFO] crate kogai/sqlite-practice 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 kogai/sqlite-practice against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kogai/sqlite-practice:/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 -Dclippy::into_iter_on_array" "-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] 1184346ca4fe8110f9edf4548efe9fbfd02bf774d3d72c2406913808bef2bbca [INFO] running `"docker" "start" "-a" "1184346ca4fe8110f9edf4548efe9fbfd02bf774d3d72c2406913808bef2bbca"` [INFO] [stderr] Checking sqlite v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ast.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | ast [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/ast.rs:43:15 [INFO] [stderr] | [INFO] [stderr] 43 | let ast = match self.current_token.token_type { [INFO] [stderr] | _______________^ [INFO] [stderr] 44 | | TokenType::Insert => self.parse_insert(), [INFO] [stderr] 45 | | TokenType::Delete => { [INFO] [stderr] 46 | | self.next_token(); [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | }; [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/token.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | spliced [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/token.rs:127:19 [INFO] [stderr] | [INFO] [stderr] 127 | let spliced = input.drain(start..end).collect::(); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/token.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | spliced [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/token.rs:142:19 [INFO] [stderr] | [INFO] [stderr] 142 | let spliced = input.drain(start..end).collect::(); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ast.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | ast [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/ast.rs:43:15 [INFO] [stderr] | [INFO] [stderr] 43 | let ast = match self.current_token.token_type { [INFO] [stderr] | _______________^ [INFO] [stderr] 44 | | TokenType::Insert => self.parse_insert(), [INFO] [stderr] 45 | | TokenType::Delete => { [INFO] [stderr] 46 | | self.next_token(); [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | }; [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/token.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | spliced [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/token.rs:127:19 [INFO] [stderr] | [INFO] [stderr] 127 | let spliced = input.drain(start..end).collect::(); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/token.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | spliced [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/token.rs:142:19 [INFO] [stderr] | [INFO] [stderr] 142 | let spliced = input.drain(start..end).collect::(); [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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/pager.rs:40:19 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn get_page<'a>(&mut self, page_num: usize) -> Result, io::Error> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/pager.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | self.file.write(&data)?; [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] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/pager.rs:70:14 [INFO] [stderr] | [INFO] [stderr] 70 | if let Ok(_) = Row::de(&buf.to_vec(), &def) { [INFO] [stderr] | _______- ^^^^^ [INFO] [stderr] 71 | | offset += def.row_size as u64; [INFO] [stderr] 72 | | row_num += 1; [INFO] [stderr] 73 | | } else { [INFO] [stderr] 74 | | is_fill = false; [INFO] [stderr] 75 | | } [INFO] [stderr] | |_______- help: try this: `if Row::de(&buf.to_vec(), &def).is_ok()` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/row.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / match self { [INFO] [stderr] 22 | | &TEXT(size) => size, [INFO] [stderr] 23 | | &INTEGER => 10, [INFO] [stderr] 24 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 21 | match *self { [INFO] [stderr] 22 | TEXT(size) => size, [INFO] [stderr] 23 | INTEGER => 10, [INFO] [stderr] | [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/row.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn de(source: &Vec, def: &Definition) -> Result { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: the loop variable `i` is used to index `page` [INFO] [stderr] --> src/table.rs:40:14 [INFO] [stderr] | [INFO] [stderr] 40 | for i in byte_offset..byte_offset + self.def.row_size { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 40 | for (i, ) in page.iter_mut().enumerate().skip(byte_offset).take(self.def.row_size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/table.rs:42:16 [INFO] [stderr] | [INFO] [stderr] 42 | let el = row.get(idx_of_row).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `row[idx_of_row]` [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: manual implementation of an assign operation [INFO] [stderr] --> src/token.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | self.line = self.line + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.line += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:16:11 [INFO] [stderr] | [INFO] [stderr] 16 | match expressions.get(0).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&expressions[0]` [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().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:18:42 [INFO] [stderr] | [INFO] [stderr] 18 | let id = u32::from_str_radix(statements.get(0).unwrap().as_ref(), 10).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&statements[0]` [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().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:19:28 [INFO] [stderr] | [INFO] [stderr] 19 | let username = statements.get(1).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&statements[1]` [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().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:20:25 [INFO] [stderr] | [INFO] [stderr] 20 | let email = statements.get(2).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&statements[2]` [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: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:40:32 [INFO] [stderr] | [INFO] [stderr] 40 | io::stdout().write_all(&mut prompt.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:52:32 [INFO] [stderr] | [INFO] [stderr] 52 | io::stdout().write_all(&mut result).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | .write_all(&mut r#"SQLite version 0.1.0 2018-06-04 19:24:41 [INFO] [stderr] | ____________________^ [INFO] [stderr] 61 | | Enter ".help" for usage hints. [INFO] [stderr] 62 | | Connected to a transient in-memory database. [INFO] [stderr] 63 | | Use ".open FILENAME" to reopen on a persistent database. [INFO] [stderr] 64 | | "#.as_bytes()) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/main.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | .write_all(&mut r#"SQLite version 0.1.0 2018-06-04 19:24:41 [INFO] [stderr] | _________________________^ [INFO] [stderr] 61 | | Enter ".help" for usage hints. [INFO] [stderr] 62 | | Connected to a transient in-memory database. [INFO] [stderr] 63 | | Use ".open FILENAME" to reopen on a persistent database. [INFO] [stderr] 64 | | "#.as_bytes()) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] help: consider using a byte string literal instead [INFO] [stderr] | [INFO] [stderr] 60 | .write_all(&mut br#"SQLite version 0.1.0 2018-06-04 19:24:41 [INFO] [stderr] 61 | Enter ".help" for usage hints. [INFO] [stderr] 62 | Connected to a transient in-memory database. [INFO] [stderr] 63 | Use ".open FILENAME" to reopen on a persistent database. [INFO] [stderr] 64 | "#) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `sqlite`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/pager.rs:40:19 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn get_page<'a>(&mut self, page_num: usize) -> Result, io::Error> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/pager.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | self.file.write(&data)?; [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] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/pager.rs:70:14 [INFO] [stderr] | [INFO] [stderr] 70 | if let Ok(_) = Row::de(&buf.to_vec(), &def) { [INFO] [stderr] | _______- ^^^^^ [INFO] [stderr] 71 | | offset += def.row_size as u64; [INFO] [stderr] 72 | | row_num += 1; [INFO] [stderr] 73 | | } else { [INFO] [stderr] 74 | | is_fill = false; [INFO] [stderr] 75 | | } [INFO] [stderr] | |_______- help: try this: `if Row::de(&buf.to_vec(), &def).is_ok()` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/row.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / match self { [INFO] [stderr] 22 | | &TEXT(size) => size, [INFO] [stderr] 23 | | &INTEGER => 10, [INFO] [stderr] 24 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 21 | match *self { [INFO] [stderr] 22 | TEXT(size) => size, [INFO] [stderr] 23 | INTEGER => 10, [INFO] [stderr] | [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/row.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn de(source: &Vec, def: &Definition) -> Result { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: the loop variable `i` is used to index `page` [INFO] [stderr] --> src/table.rs:40:14 [INFO] [stderr] | [INFO] [stderr] 40 | for i in byte_offset..byte_offset + self.def.row_size { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 40 | for (i, ) in page.iter_mut().enumerate().skip(byte_offset).take(self.def.row_size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/table.rs:42:16 [INFO] [stderr] | [INFO] [stderr] 42 | let el = row.get(idx_of_row).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `row[idx_of_row]` [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: manual implementation of an assign operation [INFO] [stderr] --> src/token.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | self.line = self.line + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.line += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:16:11 [INFO] [stderr] | [INFO] [stderr] 16 | match expressions.get(0).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&expressions[0]` [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().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:18:42 [INFO] [stderr] | [INFO] [stderr] 18 | let id = u32::from_str_radix(statements.get(0).unwrap().as_ref(), 10).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&statements[0]` [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().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:19:28 [INFO] [stderr] | [INFO] [stderr] 19 | let username = statements.get(1).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&statements[1]` [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().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:20:25 [INFO] [stderr] | [INFO] [stderr] 20 | let email = statements.get(2).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&statements[2]` [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: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:40:32 [INFO] [stderr] | [INFO] [stderr] 40 | io::stdout().write_all(&mut prompt.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:52:32 [INFO] [stderr] | [INFO] [stderr] 52 | io::stdout().write_all(&mut result).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | .write_all(&mut r#"SQLite version 0.1.0 2018-06-04 19:24:41 [INFO] [stderr] | ____________________^ [INFO] [stderr] 61 | | Enter ".help" for usage hints. [INFO] [stderr] 62 | | Connected to a transient in-memory database. [INFO] [stderr] 63 | | Use ".open FILENAME" to reopen on a persistent database. [INFO] [stderr] 64 | | "#.as_bytes()) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/main.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | .write_all(&mut r#"SQLite version 0.1.0 2018-06-04 19:24:41 [INFO] [stderr] | _________________________^ [INFO] [stderr] 61 | | Enter ".help" for usage hints. [INFO] [stderr] 62 | | Connected to a transient in-memory database. [INFO] [stderr] 63 | | Use ".open FILENAME" to reopen on a persistent database. [INFO] [stderr] 64 | | "#.as_bytes()) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] help: consider using a byte string literal instead [INFO] [stderr] | [INFO] [stderr] 60 | .write_all(&mut br#"SQLite version 0.1.0 2018-06-04 19:24:41 [INFO] [stderr] 61 | Enter ".help" for usage hints. [INFO] [stderr] 62 | Connected to a transient in-memory database. [INFO] [stderr] 63 | Use ".open FILENAME" to reopen on a persistent database. [INFO] [stderr] 64 | "#) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `sqlite`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1184346ca4fe8110f9edf4548efe9fbfd02bf774d3d72c2406913808bef2bbca"` [INFO] running `"docker" "rm" "-f" "1184346ca4fe8110f9edf4548efe9fbfd02bf774d3d72c2406913808bef2bbca"` [INFO] [stdout] 1184346ca4fe8110f9edf4548efe9fbfd02bf774d3d72c2406913808bef2bbca