[INFO] crate kontrak-sqlite 0.1.4 is already in cache [INFO] extracting crate kontrak-sqlite 0.1.4 into work/ex/clippy-test-run/sources/stable/reg/kontrak-sqlite/0.1.4 [INFO] extracting crate kontrak-sqlite 0.1.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kontrak-sqlite/0.1.4 [INFO] validating manifest of kontrak-sqlite-0.1.4 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 kontrak-sqlite-0.1.4 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 kontrak-sqlite-0.1.4 [INFO] finished frobbing kontrak-sqlite-0.1.4 [INFO] frobbed toml for kontrak-sqlite-0.1.4 written to work/ex/clippy-test-run/sources/stable/reg/kontrak-sqlite/0.1.4/Cargo.toml [INFO] started frobbing kontrak-sqlite-0.1.4 [INFO] finished frobbing kontrak-sqlite-0.1.4 [INFO] frobbed toml for kontrak-sqlite-0.1.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kontrak-sqlite/0.1.4/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 kontrak-sqlite-0.1.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/kontrak-sqlite/0.1.4:/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] 3f05fa35958a21b7cf67b52ada250507eb16919cbb3adbee9cb1634b9f9df63a [INFO] running `"docker" "start" "-a" "3f05fa35958a21b7cf67b52ada250507eb16919cbb3adbee9cb1634b9f9df63a"` [INFO] [stderr] Compiling sqlite3-src v0.2.10 [INFO] [stderr] Checking temporary v0.6.3 [INFO] [stderr] Checking sqlite3-sys v0.12.0 [INFO] [stderr] Checking kontrak-sqlite v0.1.4 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/connection.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | raw: raw, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `raw` [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/cursor.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | statement: statement, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `statement` [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/connection.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | raw: raw, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `raw` [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/cursor.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | statement: statement, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `statement` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | / if let &Value::Binary(ref value) = self { [INFO] [stderr] 248 | | return Some(value); [INFO] [stderr] 249 | | } [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] 247 | if let Value::Binary(ref value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:256:9 [INFO] [stderr] | [INFO] [stderr] 256 | / if let &Value::Float(value) = self { [INFO] [stderr] 257 | | return Some(value); [INFO] [stderr] 258 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 256 | if let Value::Float(value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | / if let &Value::Integer(value) = self { [INFO] [stderr] 266 | | return Some(value); [INFO] [stderr] 267 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 265 | if let Value::Integer(value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:274:9 [INFO] [stderr] | [INFO] [stderr] 274 | / if let &Value::String(ref value) = self { [INFO] [stderr] 275 | | return Some(value); [INFO] [stderr] 276 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 274 | if let Value::String(ref value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:282:9 [INFO] [stderr] | [INFO] [stderr] 282 | / match self { [INFO] [stderr] 283 | | &Value::Binary(_) => Type::Binary, [INFO] [stderr] 284 | | &Value::Float(_) => Type::Float, [INFO] [stderr] 285 | | &Value::Integer(_) => Type::Integer, [INFO] [stderr] 286 | | &Value::String(_) => Type::String, [INFO] [stderr] 287 | | &Value::Null => Type::Null, [INFO] [stderr] 288 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 282 | match *self { [INFO] [stderr] 283 | Value::Binary(_) => Type::Binary, [INFO] [stderr] 284 | Value::Float(_) => Type::Float, [INFO] [stderr] 285 | Value::Integer(_) => Type::Integer, [INFO] [stderr] 286 | Value::String(_) => Type::String, [INFO] [stderr] 287 | Value::Null => Type::Null, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:20:23 [INFO] [stderr] | [INFO] [stderr] 20 | let mut raw = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *const _` detected. Consider using `ptr::null()` [INFO] [stderr] --> src/connection.rs:26:17 [INFO] [stderr] | [INFO] [stderr] 26 | 0 as *const _, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:46:21 [INFO] [stderr] | [INFO] [stderr] 46 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:73:21 [INFO] [stderr] | [INFO] [stderr] 73 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:129:59 [INFO] [stderr] | [INFO] [stderr] 129 | ffi::sqlite3_busy_handler(self.raw, None, 0 as *mut _) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/cursor.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn next(&mut self) -> Result> { [INFO] [stderr] 31 | | match self.state { [INFO] [stderr] 32 | | Some(State::Row) => {} [INFO] [stderr] 33 | | Some(State::Done) => return Ok(None), [INFO] [stderr] ... | [INFO] [stderr] 71 | | Ok(Some(self.values.as_ref().unwrap())) [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cursor.rs:42:21 [INFO] [stderr] | [INFO] [stderr] 42 | / match value { [INFO] [stderr] 43 | | &mut Value::Binary(ref mut value) => { [INFO] [stderr] 44 | | *value = try!(self.statement.read(i)); [INFO] [stderr] 45 | | } [INFO] [stderr] ... | [INFO] [stderr] 55 | | &mut Value::Null => {} [INFO] [stderr] 56 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | match *value { [INFO] [stderr] 43 | Value::Binary(ref mut value) => { [INFO] [stderr] 44 | *value = try!(self.statement.read(i)); [INFO] [stderr] 45 | } [INFO] [stderr] 46 | Value::Float(ref mut value) => { [INFO] [stderr] 47 | *value = try!(self.statement.read(i)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cursor.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | / pub fn new<'l>(statement: Statement<'l>) -> Cursor<'l> { [INFO] [stderr] 83 | | Cursor { [INFO] [stderr] 84 | | state: None, [INFO] [stderr] 85 | | values: None, [INFO] [stderr] 86 | | statement: statement, [INFO] [stderr] 87 | | } [INFO] [stderr] 88 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/statement.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / pub fn next(&mut self) -> Result { [INFO] [stderr] 95 | | Ok(match unsafe { ffi::sqlite3_step(self.raw.0) } { [INFO] [stderr] 96 | | ffi::SQLITE_ROW => State::Row, [INFO] [stderr] 97 | | ffi::SQLITE_DONE => State::Done, [INFO] [stderr] 98 | | code => error!(self.raw.1, code), [INFO] [stderr] 99 | | }) [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/statement.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | / match self { [INFO] [stderr] 141 | | &Value::Binary(ref value) => (value as &[u8]).bind(statement, i), [INFO] [stderr] 142 | | &Value::Float(value) => value.bind(statement, i), [INFO] [stderr] 143 | | &Value::Integer(value) => value.bind(statement, i), [INFO] [stderr] 144 | | &Value::String(ref value) => (value as &str).bind(statement, i), [INFO] [stderr] 145 | | &Value::Null => ().bind(statement, i), [INFO] [stderr] 146 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 140 | match *self { [INFO] [stderr] 141 | Value::Binary(ref value) => (value as &[u8]).bind(statement, i), [INFO] [stderr] 142 | Value::Float(value) => value.bind(statement, i), [INFO] [stderr] 143 | Value::Integer(value) => value.bind(statement, i), [INFO] [stderr] 144 | Value::String(ref value) => (value as &str).bind(statement, i), [INFO] [stderr] 145 | Value::Null => ().bind(statement, i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: unsafe vector initialization [INFO] [stderr] --> src/statement.rs:282:13 [INFO] [stderr] | [INFO] [stderr] 281 | let mut buffer = Vec::with_capacity(count); [INFO] [stderr] | ------------------------- help: consider replace allocation with: `vec![0; count]` [INFO] [stderr] 282 | buffer.set_len(count); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unsafe_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unsafe_vector_initialization [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/statement.rs:291:20 [INFO] [stderr] | [INFO] [stderr] 291 | let mut raw0 = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/statement.rs:300:17 [INFO] [stderr] | [INFO] [stderr] 300 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `kontrak-sqlite`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | / if let &Value::Binary(ref value) = self { [INFO] [stderr] 248 | | return Some(value); [INFO] [stderr] 249 | | } [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] 247 | if let Value::Binary(ref value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:256:9 [INFO] [stderr] | [INFO] [stderr] 256 | / if let &Value::Float(value) = self { [INFO] [stderr] 257 | | return Some(value); [INFO] [stderr] 258 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 256 | if let Value::Float(value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | / if let &Value::Integer(value) = self { [INFO] [stderr] 266 | | return Some(value); [INFO] [stderr] 267 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 265 | if let Value::Integer(value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:274:9 [INFO] [stderr] | [INFO] [stderr] 274 | / if let &Value::String(ref value) = self { [INFO] [stderr] 275 | | return Some(value); [INFO] [stderr] 276 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 274 | if let Value::String(ref value) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:282:9 [INFO] [stderr] | [INFO] [stderr] 282 | / match self { [INFO] [stderr] 283 | | &Value::Binary(_) => Type::Binary, [INFO] [stderr] 284 | | &Value::Float(_) => Type::Float, [INFO] [stderr] 285 | | &Value::Integer(_) => Type::Integer, [INFO] [stderr] 286 | | &Value::String(_) => Type::String, [INFO] [stderr] 287 | | &Value::Null => Type::Null, [INFO] [stderr] 288 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 282 | match *self { [INFO] [stderr] 283 | Value::Binary(_) => Type::Binary, [INFO] [stderr] 284 | Value::Float(_) => Type::Float, [INFO] [stderr] 285 | Value::Integer(_) => Type::Integer, [INFO] [stderr] 286 | Value::String(_) => Type::String, [INFO] [stderr] 287 | Value::Null => Type::Null, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:20:23 [INFO] [stderr] | [INFO] [stderr] 20 | let mut raw = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *const _` detected. Consider using `ptr::null()` [INFO] [stderr] --> src/connection.rs:26:17 [INFO] [stderr] | [INFO] [stderr] 26 | 0 as *const _, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:46:21 [INFO] [stderr] | [INFO] [stderr] 46 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:73:21 [INFO] [stderr] | [INFO] [stderr] 73 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/connection.rs:129:59 [INFO] [stderr] | [INFO] [stderr] 129 | ffi::sqlite3_busy_handler(self.raw, None, 0 as *mut _) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/cursor.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn next(&mut self) -> Result> { [INFO] [stderr] 31 | | match self.state { [INFO] [stderr] 32 | | Some(State::Row) => {} [INFO] [stderr] 33 | | Some(State::Done) => return Ok(None), [INFO] [stderr] ... | [INFO] [stderr] 71 | | Ok(Some(self.values.as_ref().unwrap())) [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cursor.rs:42:21 [INFO] [stderr] | [INFO] [stderr] 42 | / match value { [INFO] [stderr] 43 | | &mut Value::Binary(ref mut value) => { [INFO] [stderr] 44 | | *value = try!(self.statement.read(i)); [INFO] [stderr] 45 | | } [INFO] [stderr] ... | [INFO] [stderr] 55 | | &mut Value::Null => {} [INFO] [stderr] 56 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | match *value { [INFO] [stderr] 43 | Value::Binary(ref mut value) => { [INFO] [stderr] 44 | *value = try!(self.statement.read(i)); [INFO] [stderr] 45 | } [INFO] [stderr] 46 | Value::Float(ref mut value) => { [INFO] [stderr] 47 | *value = try!(self.statement.read(i)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cursor.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | / pub fn new<'l>(statement: Statement<'l>) -> Cursor<'l> { [INFO] [stderr] 83 | | Cursor { [INFO] [stderr] 84 | | state: None, [INFO] [stderr] 85 | | values: None, [INFO] [stderr] 86 | | statement: statement, [INFO] [stderr] 87 | | } [INFO] [stderr] 88 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/statement.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / pub fn next(&mut self) -> Result { [INFO] [stderr] 95 | | Ok(match unsafe { ffi::sqlite3_step(self.raw.0) } { [INFO] [stderr] 96 | | ffi::SQLITE_ROW => State::Row, [INFO] [stderr] 97 | | ffi::SQLITE_DONE => State::Done, [INFO] [stderr] 98 | | code => error!(self.raw.1, code), [INFO] [stderr] 99 | | }) [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/statement.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | / match self { [INFO] [stderr] 141 | | &Value::Binary(ref value) => (value as &[u8]).bind(statement, i), [INFO] [stderr] 142 | | &Value::Float(value) => value.bind(statement, i), [INFO] [stderr] 143 | | &Value::Integer(value) => value.bind(statement, i), [INFO] [stderr] 144 | | &Value::String(ref value) => (value as &str).bind(statement, i), [INFO] [stderr] 145 | | &Value::Null => ().bind(statement, i), [INFO] [stderr] 146 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 140 | match *self { [INFO] [stderr] 141 | Value::Binary(ref value) => (value as &[u8]).bind(statement, i), [INFO] [stderr] 142 | Value::Float(value) => value.bind(statement, i), [INFO] [stderr] 143 | Value::Integer(value) => value.bind(statement, i), [INFO] [stderr] 144 | Value::String(ref value) => (value as &str).bind(statement, i), [INFO] [stderr] 145 | Value::Null => ().bind(statement, i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: unsafe vector initialization [INFO] [stderr] --> src/statement.rs:282:13 [INFO] [stderr] | [INFO] [stderr] 281 | let mut buffer = Vec::with_capacity(count); [INFO] [stderr] | ------------------------- help: consider replace allocation with: `vec![0; count]` [INFO] [stderr] 282 | buffer.set_len(count); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unsafe_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unsafe_vector_initialization [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/statement.rs:291:20 [INFO] [stderr] | [INFO] [stderr] 291 | let mut raw0 = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/statement.rs:300:17 [INFO] [stderr] | [INFO] [stderr] 300 | 0 as *mut _, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `kontrak-sqlite`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3f05fa35958a21b7cf67b52ada250507eb16919cbb3adbee9cb1634b9f9df63a"` [INFO] running `"docker" "rm" "-f" "3f05fa35958a21b7cf67b52ada250507eb16919cbb3adbee9cb1634b9f9df63a"` [INFO] [stdout] 3f05fa35958a21b7cf67b52ada250507eb16919cbb3adbee9cb1634b9f9df63a