[INFO] updating cached repository dwerner/nom-obj [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/dwerner/nom-obj [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/dwerner/nom-obj" "work/ex/clippy-test-run/sources/stable/gh/dwerner/nom-obj"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/dwerner/nom-obj'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/dwerner/nom-obj" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dwerner/nom-obj"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dwerner/nom-obj'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] af396c1c39f940fae0e51005313fa02567cd3cea [INFO] sha for GitHub repo dwerner/nom-obj: af396c1c39f940fae0e51005313fa02567cd3cea [INFO] validating manifest of dwerner/nom-obj 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 dwerner/nom-obj 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 dwerner/nom-obj [INFO] finished frobbing dwerner/nom-obj [INFO] frobbed toml for dwerner/nom-obj written to work/ex/clippy-test-run/sources/stable/gh/dwerner/nom-obj/Cargo.toml [INFO] started frobbing dwerner/nom-obj [INFO] finished frobbing dwerner/nom-obj [INFO] frobbed toml for dwerner/nom-obj written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dwerner/nom-obj/Cargo.toml [INFO] crate dwerner/nom-obj 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 dwerner/nom-obj 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-2/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/dwerner/nom-obj:/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] 64ea146cdc942a256bd50dd27756d3005829b3d3dcbc843d242e75b293637d1c [INFO] running `"docker" "start" "-a" "64ea146cdc942a256bd50dd27756d3005829b3d3dcbc843d242e75b293637d1c"` [INFO] [stderr] Checking nom-obj v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/obj.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/mtl.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/model/mod.rs:133:36 [INFO] [stderr] | [INFO] [stderr] 133 | &ObjLine::Vertex(x,y,z,w) => (x,y,z,w.unwrap_or(1.0)), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/obj.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/mtl.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/model/mod.rs:133:36 [INFO] [stderr] | [INFO] [stderr] 133 | &ObjLine::Vertex(x,y,z,w) => (x,y,z,w.unwrap_or(1.0)), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parser/common.rs:111:25 [INFO] [stderr] | [INFO] [stderr] 111 | assert_eq!(b, (-1.000001, 7742.9)); [INFO] [stderr] | ^^^^^^^^ help: consider: `1.000_001` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parser/common.rs:118:31 [INFO] [stderr] | [INFO] [stderr] 118 | assert_eq!(b, (0.95, -1.000001, 42.9)); [INFO] [stderr] | ^^^^^^^^ help: consider: `1.000_001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parser/obj.rs:343:24 [INFO] [stderr] | [INFO] [stderr] 343 | const CUBE_MODEL: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parser/mtl.rs:230:22 [INFO] [stderr] | [INFO] [stderr] 230 | const MTL_FILE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/parser/common.rs:79:35 [INFO] [stderr] | [INFO] [stderr] 79 | sign.and_then(|s| if s[0] == ('-' as u8) { Some(-1f32) } else { None }).unwrap_or(1f32) * value [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'-' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `CUBE_MODEL` [INFO] [stderr] --> src/parser/obj.rs:343:5 [INFO] [stderr] | [INFO] [stderr] 343 | / const CUBE_MODEL: &'static str = " [INFO] [stderr] 344 | | # Blender v3.78 (sub 0) OBJ File: 'untitled.blend' [INFO] [stderr] 345 | | # www.blender.org [INFO] [stderr] 346 | | mtllib cube.mtl [INFO] [stderr] ... | [INFO] [stderr] 394 | | f 4/4/6 2/18/6 6/19/6 [INFO] [stderr] 395 | | "; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MTL_FILE` [INFO] [stderr] --> src/parser/mtl.rs:230:5 [INFO] [stderr] | [INFO] [stderr] 230 | / const MTL_FILE: &'static str = " [INFO] [stderr] 231 | | # Blender MTL File: 'None' [INFO] [stderr] 232 | | # Material Count: 1 [INFO] [stderr] 233 | | [INFO] [stderr] ... | [INFO] [stderr] 242 | | illum 2 [INFO] [stderr] 243 | | "; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/parser/common.rs:79:35 [INFO] [stderr] | [INFO] [stderr] 79 | sign.and_then(|s| if s[0] == ('-' as u8) { Some(-1f32) } else { None }).unwrap_or(1f32) * value [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'-' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/parser/common.rs:103:31 [INFO] [stderr] | [INFO] [stderr] 103 | let something = float("-0.00005".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"-0.00005"` [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] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/parser/common.rs:109:29 [INFO] [stderr] | [INFO] [stderr] 109 | let ff = float_pair(" -1.000001 7742.9 ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" -1.000001 7742.9 "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/parser/common.rs:116:32 [INFO] [stderr] | [INFO] [stderr] 116 | let fff = float_triple(" 0.95 -1.000001 42.9 ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" 0.95 -1.000001 42.9 "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/parser/obj.rs:194:30 [INFO] [stderr] | [INFO] [stderr] 194 | let ff = face_triple("1/11/4".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"1/11/4"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/model/mod.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | / match line { [INFO] [stderr] 74 | | MtlLine::DiffuseMap(filename) => { [INFO] [stderr] 75 | | let whole_path: PathBuf = Path::join(Path::new(parent), filename.clone()); [INFO] [stderr] 76 | | obj_material.diffuse_map = whole_path.to_owned().to_str().unwrap().to_string(); [INFO] [stderr] ... | [INFO] [stderr] 79 | | _ => {} [INFO] [stderr] 80 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 73 | if let MtlLine::DiffuseMap(filename) = line { [INFO] [stderr] 74 | let whole_path: PathBuf = Path::join(Path::new(parent), filename.clone()); [INFO] [stderr] 75 | obj_material.diffuse_map = whole_path.to_owned().to_str().unwrap().to_string(); [INFO] [stderr] 76 | break; // TODO: handle more than a single material [INFO] [stderr] 77 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `model::ObjObject` [INFO] [stderr] --> src/model/mod.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / pub fn new() -> Self { [INFO] [stderr] 104 | | ObjObject{ [INFO] [stderr] 105 | | name: None, [INFO] [stderr] 106 | | material: None, [INFO] [stderr] ... | [INFO] [stderr] 112 | | } [INFO] [stderr] 113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 87 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / match &self.material { [INFO] [stderr] 121 | | &Some(ref value) => Some(value.clone()), [INFO] [stderr] 122 | | &None => None [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 120 | match self.material { [INFO] [stderr] 121 | Some(ref value) => Some(value.clone()), [INFO] [stderr] 122 | None => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | / match &self.vertices[(v as usize) - 1] { [INFO] [stderr] 133 | | &ObjLine::Vertex(x,y,z,w) => (x,y,z,w.unwrap_or(1.0)), [INFO] [stderr] 134 | | _ => panic!("not a vertex") [INFO] [stderr] 135 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 132 | match self.vertices[(v as usize) - 1] { [INFO] [stderr] 133 | ObjLine::Vertex(x,y,z,w) => (x,y,z,w.unwrap_or(1.0)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | / match &self.texture_coords[(vt.unwrap() as usize) - 1] { [INFO] [stderr] 144 | | &ObjLine::TextureUVW(u, v, w) => (u, v, w.unwrap_or(0.0)), [INFO] [stderr] 145 | | _ => panic!("not a vertex") [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: try [INFO] [stderr] | [INFO] [stderr] 143 | match self.texture_coords[(vt.unwrap() as usize) - 1] { [INFO] [stderr] 144 | ObjLine::TextureUVW(u, v, w) => (u, v, w.unwrap_or(0.0)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match &self.normals[(vn.unwrap() as usize) - 1] { [INFO] [stderr] 155 | | &ObjLine::Normal(x, y, z) => (x, y, z), [INFO] [stderr] 156 | | _ => panic!("not a vertex") [INFO] [stderr] 157 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 154 | match self.normals[(vn.unwrap() as usize) - 1] { [INFO] [stderr] 155 | ObjLine::Normal(x, y, z) => (x, y, z), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/model/mod.rs:162:52 [INFO] [stderr] | [INFO] [stderr] 162 | fn interleave_tuples(&self, id: &FaceIndex) -> ( [INFO] [stderr] | ____________________________________________________^ [INFO] [stderr] 163 | | (f32, f32, f32, f32), [INFO] [stderr] 164 | | (f32, f32, f32), [INFO] [stderr] 165 | | (f32,f32,f32) [INFO] [stderr] 166 | | ) { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | / match &self.faces[i] { [INFO] [stderr] 182 | | &ObjLine::Face(ref id1, ref id2, ref id3) => { [INFO] [stderr] 183 | | [INFO] [stderr] 184 | | let next_idx = (id1.0 as usize) - 1; [INFO] [stderr] ... | [INFO] [stderr] 197 | | _ => { panic!("Found something other than a ObjLine::Face in object.faces") } [INFO] [stderr] 198 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 181 | match self.faces[i] { [INFO] [stderr] 182 | ObjLine::Face(ref id1, ref id2, ref id3) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/model/mod.rs:186:48 [INFO] [stderr] | [INFO] [stderr] 186 | vertex_map.entry(next_idx).or_insert(self.interleave_tuples(id1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| self.interleave_tuples(id1))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/model/mod.rs:190:48 [INFO] [stderr] | [INFO] [stderr] 190 | vertex_map.entry(next_idx).or_insert(self.interleave_tuples(id2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| self.interleave_tuples(id2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/model/mod.rs:194:48 [INFO] [stderr] | [INFO] [stderr] 194 | vertex_map.entry(next_idx).or_insert(self.interleave_tuples(id3)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| self.interleave_tuples(id3))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/model/mod.rs:208:18 [INFO] [stderr] | [INFO] [stderr] 208 | pub v_vt_vn: Vec<((f32, f32, f32, f32), (f32, f32, f32), (f32, f32, f32))>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/model/mod.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | / match line { [INFO] [stderr] 74 | | MtlLine::DiffuseMap(filename) => { [INFO] [stderr] 75 | | let whole_path: PathBuf = Path::join(Path::new(parent), filename.clone()); [INFO] [stderr] 76 | | obj_material.diffuse_map = whole_path.to_owned().to_str().unwrap().to_string(); [INFO] [stderr] ... | [INFO] [stderr] 79 | | _ => {} [INFO] [stderr] 80 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 73 | if let MtlLine::DiffuseMap(filename) = line { [INFO] [stderr] 74 | let whole_path: PathBuf = Path::join(Path::new(parent), filename.clone()); [INFO] [stderr] 75 | obj_material.diffuse_map = whole_path.to_owned().to_str().unwrap().to_string(); [INFO] [stderr] 76 | break; // TODO: handle more than a single material [INFO] [stderr] 77 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `model::ObjObject` [INFO] [stderr] --> src/model/mod.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / pub fn new() -> Self { [INFO] [stderr] 104 | | ObjObject{ [INFO] [stderr] 105 | | name: None, [INFO] [stderr] 106 | | material: None, [INFO] [stderr] ... | [INFO] [stderr] 112 | | } [INFO] [stderr] 113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 87 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / match &self.material { [INFO] [stderr] 121 | | &Some(ref value) => Some(value.clone()), [INFO] [stderr] 122 | | &None => None [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 120 | match self.material { [INFO] [stderr] 121 | Some(ref value) => Some(value.clone()), [INFO] [stderr] 122 | None => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | / match &self.vertices[(v as usize) - 1] { [INFO] [stderr] 133 | | &ObjLine::Vertex(x,y,z,w) => (x,y,z,w.unwrap_or(1.0)), [INFO] [stderr] 134 | | _ => panic!("not a vertex") [INFO] [stderr] 135 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 132 | match self.vertices[(v as usize) - 1] { [INFO] [stderr] 133 | ObjLine::Vertex(x,y,z,w) => (x,y,z,w.unwrap_or(1.0)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | / match &self.texture_coords[(vt.unwrap() as usize) - 1] { [INFO] [stderr] 144 | | &ObjLine::TextureUVW(u, v, w) => (u, v, w.unwrap_or(0.0)), [INFO] [stderr] 145 | | _ => panic!("not a vertex") [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: try [INFO] [stderr] | [INFO] [stderr] 143 | match self.texture_coords[(vt.unwrap() as usize) - 1] { [INFO] [stderr] 144 | ObjLine::TextureUVW(u, v, w) => (u, v, w.unwrap_or(0.0)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match &self.normals[(vn.unwrap() as usize) - 1] { [INFO] [stderr] 155 | | &ObjLine::Normal(x, y, z) => (x, y, z), [INFO] [stderr] 156 | | _ => panic!("not a vertex") [INFO] [stderr] 157 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 154 | match self.normals[(vn.unwrap() as usize) - 1] { [INFO] [stderr] 155 | ObjLine::Normal(x, y, z) => (x, y, z), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/model/mod.rs:162:52 [INFO] [stderr] | [INFO] [stderr] 162 | fn interleave_tuples(&self, id: &FaceIndex) -> ( [INFO] [stderr] | ____________________________________________________^ [INFO] [stderr] 163 | | (f32, f32, f32, f32), [INFO] [stderr] 164 | | (f32, f32, f32), [INFO] [stderr] 165 | | (f32,f32,f32) [INFO] [stderr] 166 | | ) { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/model/mod.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | / match &self.faces[i] { [INFO] [stderr] 182 | | &ObjLine::Face(ref id1, ref id2, ref id3) => { [INFO] [stderr] 183 | | [INFO] [stderr] 184 | | let next_idx = (id1.0 as usize) - 1; [INFO] [stderr] ... | [INFO] [stderr] 197 | | _ => { panic!("Found something other than a ObjLine::Face in object.faces") } [INFO] [stderr] 198 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 181 | match self.faces[i] { [INFO] [stderr] 182 | ObjLine::Face(ref id1, ref id2, ref id3) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/model/mod.rs:186:48 [INFO] [stderr] | [INFO] [stderr] 186 | vertex_map.entry(next_idx).or_insert(self.interleave_tuples(id1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| self.interleave_tuples(id1))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/model/mod.rs:190:48 [INFO] [stderr] | [INFO] [stderr] 190 | vertex_map.entry(next_idx).or_insert(self.interleave_tuples(id2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| self.interleave_tuples(id2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/model/mod.rs:194:48 [INFO] [stderr] | [INFO] [stderr] 194 | vertex_map.entry(next_idx).or_insert(self.interleave_tuples(id3)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| self.interleave_tuples(id3))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/model/mod.rs:208:18 [INFO] [stderr] | [INFO] [stderr] 208 | pub v_vt_vn: Vec<((f32, f32, f32, f32), (f32, f32, f32), (f32, f32, f32))>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.94s [INFO] running `"docker" "inspect" "64ea146cdc942a256bd50dd27756d3005829b3d3dcbc843d242e75b293637d1c"` [INFO] running `"docker" "rm" "-f" "64ea146cdc942a256bd50dd27756d3005829b3d3dcbc843d242e75b293637d1c"` [INFO] [stdout] 64ea146cdc942a256bd50dd27756d3005829b3d3dcbc843d242e75b293637d1c