[INFO] crate k 0.11.1 is already in cache [INFO] extracting crate k 0.11.1 into work/ex/clippy-test-run/sources/stable/reg/k/0.11.1 [INFO] extracting crate k 0.11.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/k/0.11.1 [INFO] validating manifest of k-0.11.1 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 k-0.11.1 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 k-0.11.1 [INFO] finished frobbing k-0.11.1 [INFO] frobbed toml for k-0.11.1 written to work/ex/clippy-test-run/sources/stable/reg/k/0.11.1/Cargo.toml [INFO] started frobbing k-0.11.1 [INFO] finished frobbing k-0.11.1 [INFO] frobbed toml for k-0.11.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/k/0.11.1/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 k-0.11.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/k/0.11.1:/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] 3f8407b28c9a32658176721a127404d1f98f61e71d67cf5f2abba6a8bb340da3 [INFO] running `"docker" "start" "-a" "3f8407b28c9a32658176721a127404d1f98f61e71d67cf5f2abba6a8bb340da3"` [INFO] [stderr] Checking RustyXML v0.1.1 [INFO] [stderr] Compiling glfw-sys v3.2.2 [INFO] [stderr] Checking serde-xml-rs v0.1.2 [INFO] [stderr] Checking alga v0.6.0 [INFO] [stderr] Checking png v0.11.0 [INFO] [stderr] Checking freetype v0.3.0 [INFO] [stderr] Checking urdf-rs v0.4.2 [INFO] [stderr] Checking image v0.17.0 [INFO] [stderr] Checking nalgebra v0.15.3 [INFO] [stderr] Checking glfw v0.19.0 [INFO] [stderr] Checking ncollide3d v0.16.2 [INFO] [stderr] Checking k v0.11.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ik.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | jacobian_move_epsilon: jacobian_move_epsilon, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jacobian_move_epsilon` [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/ik.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | move_epsilon: move_epsilon, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `move_epsilon` [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/ik.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | allowable_target_distance: allowable_target_distance, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `allowable_target_distance` [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/ik.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | num_max_try: num_max_try, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_max_try` [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/joints.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | Range { min: min, max: max } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `min` [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/joints.rs:42:27 [INFO] [stderr] | [INFO] [stderr] 42 | Range { min: min, max: max } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `max` [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/joints.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | joint_type: joint_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `joint_type` [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/links.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | joint: joint, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `joint` [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/links.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/math.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | let w = q[3]; [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: consider choosing a more descriptive name [INFO] [stderr] --> src/math.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | let _1: T = T::one(); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::just_underscores_and_digits)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stderr] [INFO] [stderr] warning: consider choosing a more descriptive name [INFO] [stderr] --> src/math.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let _2: T = na::convert(2.0); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/joints.rs:85:30 [INFO] [stderr] | [INFO] [stderr] 85 | if let Some(range) = self.limits.clone() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.limits` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/rctree.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / if self.parent.is_none() { [INFO] [stderr] 84 | | return None; [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `self.parent?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [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/rctree_links.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / pub fn end_link_name<'a>(&'a self) -> &'a Option { [INFO] [stderr] 56 | | &self.end_link_name [INFO] [stderr] 57 | | } [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:59:25 [INFO] [stderr] | [INFO] [stderr] 59 | let mut links = end.iter_ancestors() [INFO] [stderr] | _________________________^ [INFO] [stderr] 60 | | .map(|ljn| ljn.clone()) [INFO] [stderr] | |___________________________________^ help: Consider calling the dedicated `cloned` method: `end.iter_ancestors().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:63:38 [INFO] [stderr] | [INFO] [stderr] 63 | let links_with_joint_angle = links [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 64 | | .iter() [INFO] [stderr] 65 | | .filter(|ljn_ref| ljn_ref.borrow().data.has_joint_angle()) [INFO] [stderr] 66 | | .map(|ljn_ref| ljn_ref.clone()) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 63 | let links_with_joint_angle = links [INFO] [stderr] 64 | .iter() [INFO] [stderr] 65 | .filter(|ljn_ref| ljn_ref.borrow().data.has_joint_angle()).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rctree_links.rs:104:33 [INFO] [stderr] | [INFO] [stderr] 104 | let mut end_transform = self.transform.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.transform` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rctree_links.rs:177:28 [INFO] [stderr] | [INFO] [stderr] 177 | .map(|ljn_ref| ljn_ref.borrow().data.joint.limits.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ljn_ref.borrow().data.joint.limits` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:206:30 [INFO] [stderr] | [INFO] [stderr] 206 | let expanded_links = root_link [INFO] [stderr] | ______________________________^ [INFO] [stderr] 207 | | .iter_descendants() [INFO] [stderr] 208 | | .map(|ln| ln.clone()) [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 206 | let expanded_links = root_link [INFO] [stderr] 207 | .iter_descendants().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:210:38 [INFO] [stderr] | [INFO] [stderr] 210 | let movable_expanded_links = expanded_links [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 211 | | .iter() [INFO] [stderr] 212 | | .filter(|ljn| ljn.borrow().data.has_joint_angle()) [INFO] [stderr] 213 | | .map(|ljn_ref| ljn_ref.clone()) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 210 | let movable_expanded_links = expanded_links [INFO] [stderr] 211 | .iter() [INFO] [stderr] 212 | .filter(|ljn| ljn.borrow().data.has_joint_angle()).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rctree_links.rs:303:25 [INFO] [stderr] | [INFO] [stderr] 303 | .map(|link| link.joint.limits.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `link.joint.limits` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this `.filter_map` can be written more simply using `.filter` [INFO] [stderr] --> src/urdf.rs:190:32 [INFO] [stderr] | [INFO] [stderr] 190 | let root_joint_nodes = ref_nodes.iter().filter_map(|ref_node| { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 191 | | match ref_node.borrow().parent { [INFO] [stderr] 192 | | None => Some(ref_node), [INFO] [stderr] 193 | | Some(_) => None, [INFO] [stderr] 194 | | } [INFO] [stderr] 195 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_filter_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stderr] [INFO] [stderr] Checking kiss3d v0.15.0 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ik.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | jacobian_move_epsilon: jacobian_move_epsilon, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jacobian_move_epsilon` [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/ik.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | move_epsilon: move_epsilon, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `move_epsilon` [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/ik.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | allowable_target_distance: allowable_target_distance, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `allowable_target_distance` [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/ik.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | num_max_try: num_max_try, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_max_try` [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/joints.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | Range { min: min, max: max } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `min` [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/joints.rs:42:27 [INFO] [stderr] | [INFO] [stderr] 42 | Range { min: min, max: max } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `max` [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/joints.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | joint_type: joint_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `joint_type` [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/links.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | joint: joint, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `joint` [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/links.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/math.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | let w = q[3]; [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: consider choosing a more descriptive name [INFO] [stderr] --> src/math.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | let _1: T = T::one(); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::just_underscores_and_digits)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stderr] [INFO] [stderr] warning: consider choosing a more descriptive name [INFO] [stderr] --> src/math.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let _2: T = na::convert(2.0); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/fk.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `k`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/ik.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `k`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/joints.rs:85:30 [INFO] [stderr] | [INFO] [stderr] 85 | if let Some(range) = self.limits.clone() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.limits` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/rctree.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / if self.parent.is_none() { [INFO] [stderr] 84 | | return None; [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `self.parent?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [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/rctree_links.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / pub fn end_link_name<'a>(&'a self) -> &'a Option { [INFO] [stderr] 56 | | &self.end_link_name [INFO] [stderr] 57 | | } [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:59:25 [INFO] [stderr] | [INFO] [stderr] 59 | let mut links = end.iter_ancestors() [INFO] [stderr] | _________________________^ [INFO] [stderr] 60 | | .map(|ljn| ljn.clone()) [INFO] [stderr] | |___________________________________^ help: Consider calling the dedicated `cloned` method: `end.iter_ancestors().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:63:38 [INFO] [stderr] | [INFO] [stderr] 63 | let links_with_joint_angle = links [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 64 | | .iter() [INFO] [stderr] 65 | | .filter(|ljn_ref| ljn_ref.borrow().data.has_joint_angle()) [INFO] [stderr] 66 | | .map(|ljn_ref| ljn_ref.clone()) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 63 | let links_with_joint_angle = links [INFO] [stderr] 64 | .iter() [INFO] [stderr] 65 | .filter(|ljn_ref| ljn_ref.borrow().data.has_joint_angle()).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rctree_links.rs:104:33 [INFO] [stderr] | [INFO] [stderr] 104 | let mut end_transform = self.transform.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.transform` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rctree_links.rs:177:28 [INFO] [stderr] | [INFO] [stderr] 177 | .map(|ljn_ref| ljn_ref.borrow().data.joint.limits.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ljn_ref.borrow().data.joint.limits` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:206:30 [INFO] [stderr] | [INFO] [stderr] 206 | let expanded_links = root_link [INFO] [stderr] | ______________________________^ [INFO] [stderr] 207 | | .iter_descendants() [INFO] [stderr] 208 | | .map(|ln| ln.clone()) [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 206 | let expanded_links = root_link [INFO] [stderr] 207 | .iter_descendants().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rctree_links.rs:210:38 [INFO] [stderr] | [INFO] [stderr] 210 | let movable_expanded_links = expanded_links [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 211 | | .iter() [INFO] [stderr] 212 | | .filter(|ljn| ljn.borrow().data.has_joint_angle()) [INFO] [stderr] 213 | | .map(|ljn_ref| ljn_ref.clone()) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 210 | let movable_expanded_links = expanded_links [INFO] [stderr] 211 | .iter() [INFO] [stderr] 212 | .filter(|ljn| ljn.borrow().data.has_joint_angle()).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rctree_links.rs:303:25 [INFO] [stderr] | [INFO] [stderr] 303 | .map(|link| link.joint.limits.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `link.joint.limits` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/rctree_links.rs:547:13 [INFO] [stderr] | [INFO] [stderr] 547 | assert!(angles[0] == 0.1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(angles[0] - 0.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/rctree_links.rs:547:13 [INFO] [stderr] | [INFO] [stderr] 547 | assert!(angles[0] == 0.1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/rctree_links.rs:548:13 [INFO] [stderr] | [INFO] [stderr] 548 | assert!(angles[1] == 0.2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(angles[1] - 0.2).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/rctree_links.rs:548:13 [INFO] [stderr] | [INFO] [stderr] 548 | assert!(angles[1] == 0.2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/rctree_links.rs:549:13 [INFO] [stderr] | [INFO] [stderr] 549 | assert!(angles[2] == 0.9); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(angles[2] - 0.9).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/rctree_links.rs:549:13 [INFO] [stderr] | [INFO] [stderr] 549 | assert!(angles[2] == 0.9); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: this `.filter_map` can be written more simply using `.filter` [INFO] [stderr] --> src/urdf.rs:190:32 [INFO] [stderr] | [INFO] [stderr] 190 | let root_joint_nodes = ref_nodes.iter().filter_map(|ref_node| { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 191 | | match ref_node.borrow().parent { [INFO] [stderr] 192 | | None => Some(ref_node), [INFO] [stderr] 193 | | Some(_) => None, [INFO] [stderr] 194 | | } [INFO] [stderr] 195 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_filter_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `k`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> examples/interactive_ik.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | / match event.value { [INFO] [stderr] 198 | | WindowEvent::Key(code, _, Action::Release, _) => { [INFO] [stderr] 199 | | match code { [INFO] [stderr] 200 | | Key::Z => { [INFO] [stderr] ... | [INFO] [stderr] 215 | | _ => {} [INFO] [stderr] 216 | | } [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] 197 | if let WindowEvent::Key(code, _, Action::Release, _) = event.value { [INFO] [stderr] 198 | match code { [INFO] [stderr] 199 | Key::Z => { [INFO] [stderr] 200 | // reset [INFO] [stderr] 201 | arm.set_joint_angles(&angles).unwrap(); [INFO] [stderr] 202 | target = arm.end_transform(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> examples/interactive_ik.rs:222:38 [INFO] [stderr] | [INFO] [stderr] 222 | c_t.set_local_transformation(target.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `target` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "3f8407b28c9a32658176721a127404d1f98f61e71d67cf5f2abba6a8bb340da3"` [INFO] running `"docker" "rm" "-f" "3f8407b28c9a32658176721a127404d1f98f61e71d67cf5f2abba6a8bb340da3"` [INFO] [stdout] 3f8407b28c9a32658176721a127404d1f98f61e71d67cf5f2abba6a8bb340da3