[INFO] updating cached repository Jon-Davis/ECS [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Jon-Davis/ECS [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Jon-Davis/ECS" "work/ex/clippy-test-run/sources/stable/gh/Jon-Davis/ECS"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Jon-Davis/ECS'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Jon-Davis/ECS" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Jon-Davis/ECS"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Jon-Davis/ECS'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 302f41f895908dce7414c56bda0fef5ad17cccd0 [INFO] sha for GitHub repo Jon-Davis/ECS: 302f41f895908dce7414c56bda0fef5ad17cccd0 [INFO] validating manifest of Jon-Davis/ECS 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 Jon-Davis/ECS 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 Jon-Davis/ECS [INFO] finished frobbing Jon-Davis/ECS [INFO] frobbed toml for Jon-Davis/ECS written to work/ex/clippy-test-run/sources/stable/gh/Jon-Davis/ECS/Cargo.toml [INFO] started frobbing Jon-Davis/ECS [INFO] finished frobbing Jon-Davis/ECS [INFO] frobbed toml for Jon-Davis/ECS written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Jon-Davis/ECS/Cargo.toml [INFO] crate Jon-Davis/ECS 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 Jon-Davis/ECS against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Jon-Davis/ECS:/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] e353cc1262b66136bc33e551d129531c5763f7fa3a29264e8d9b261297f355d5 [INFO] running `"docker" "start" "-a" "e353cc1262b66136bc33e551d129531c5763f7fa3a29264e8d9b261297f355d5"` [INFO] [stderr] Checking ecs v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/syncmap.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | value : value, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `value` [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/syncmap.rs:265:25 [INFO] [stderr] | [INFO] [stderr] 265 | reads: reads, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `reads` [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/syncmap.rs:266:25 [INFO] [stderr] | [INFO] [stderr] 266 | writes: writes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writes` [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/resources.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | component: component, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `component` [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/resources.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | resources: resources, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resources` [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/resources.rs:406:17 [INFO] [stderr] | [INFO] [stderr] 406 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/resources.rs:413:17 [INFO] [stderr] | [INFO] [stderr] 413 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/entity.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/syncmap.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | value : value, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `value` [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/syncmap.rs:265:25 [INFO] [stderr] | [INFO] [stderr] 265 | reads: reads, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `reads` [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/syncmap.rs:266:25 [INFO] [stderr] | [INFO] [stderr] 266 | writes: writes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writes` [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/resources.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | component: component, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `component` [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/resources.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | resources: resources, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resources` [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/resources.rs:406:17 [INFO] [stderr] | [INFO] [stderr] 406 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/resources.rs:413:17 [INFO] [stderr] | [INFO] [stderr] 413 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/entity.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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: unused import: `super::*` [INFO] [stderr] --> src/syncmap.rs:323:9 [INFO] [stderr] | [INFO] [stderr] 323 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `thread`, `time` [INFO] [stderr] --> src/syncmap.rs:324:15 [INFO] [stderr] | [INFO] [stderr] 324 | use std::{thread,time}; [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::Arc` [INFO] [stderr] --> src/syncmap.rs:325:9 [INFO] [stderr] | [INFO] [stderr] 325 | use std::sync::Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/resources.rs:122:9 [INFO] [stderr] | [INFO] [stderr] 122 | / if self.len() >= 2 { [INFO] [stderr] 123 | | if self.components[self.len() - 2].get_next() == (self.len() - 1) as u64{ [INFO] [stderr] 124 | | found_end_prev = true; [INFO] [stderr] 125 | | end_prev = (self.len() - 2) as isize; [INFO] [stderr] 126 | | } [INFO] [stderr] 127 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 122 | if self.len() >= 2 && self.components[self.len() - 2].get_next() == (self.len() - 1) as u64 { [INFO] [stderr] 123 | found_end_prev = true; [INFO] [stderr] 124 | end_prev = (self.len() - 2) as isize; [INFO] [stderr] 125 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/main.rs:46:26 [INFO] [stderr] | [INFO] [stderr] 46 | fn update(&mut self, token : ResourceToken) -> Trans { [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/resources.rs:122:9 [INFO] [stderr] | [INFO] [stderr] 122 | / if self.len() >= 2 { [INFO] [stderr] 123 | | if self.components[self.len() - 2].get_next() == (self.len() - 1) as u64{ [INFO] [stderr] 124 | | found_end_prev = true; [INFO] [stderr] 125 | | end_prev = (self.len() - 2) as isize; [INFO] [stderr] 126 | | } [INFO] [stderr] 127 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 122 | if self.len() >= 2 && self.components[self.len() - 2].get_next() == (self.len() - 1) as u64 { [INFO] [stderr] 123 | found_end_prev = true; [INFO] [stderr] 124 | end_prev = (self.len() - 2) as isize; [INFO] [stderr] 125 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Read` [INFO] [stderr] --> src/syncmap.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | Read, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read` [INFO] [stderr] --> src/syncmap.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn read(&mut self, r : K) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read` [INFO] [stderr] --> src/syncmap.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn read(&self, key : &K) -> Option<& V>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Push` [INFO] [stderr] --> src/state.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | Push(State), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Swap` [INFO] [stderr] --> src/state.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | Swap(State), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_entity` [INFO] [stderr] --> src/resources.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | fn get_entity(&self) -> u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `type_id` [INFO] [stderr] --> src/resources.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | type_id: TypeId, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `iter` [INFO] [stderr] --> src/resources.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | fn iter(&self) -> ComponentVectorIter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remove` [INFO] [stderr] --> src/resources.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | fn remove(&mut self, entity_id : u64){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ComponentVectorIter` [INFO] [stderr] --> src/resources.rs:192:1 [INFO] [stderr] | [INFO] [stderr] 192 | struct ComponentVectorIter<'a, D: Component> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/resources.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | fn new(vector : &ComponentVector) -> ComponentVectorIter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CompVecIter` [INFO] [stderr] --> src/resources.rs:227:1 [INFO] [stderr] | [INFO] [stderr] 227 | pub struct CompVecIter<'a, D : Component> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/resources.rs:232:5 [INFO] [stderr] | [INFO] [stderr] 232 | fn new(vector : &'a ComponentVector) -> CompVecIter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `loan` [INFO] [stderr] --> src/resources.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | pub fn loan(&self) -> Option<&Loan<'a,TypeId,Box>>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unpack` [INFO] [stderr] --> src/resources.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | pub fn unpack(&self) -> Option<&Box>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read` [INFO] [stderr] --> src/resources.rs:376:5 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn read(&mut self) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `id` [INFO] [stderr] --> src/entity.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn id(&self) -> u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: mutable borrow from immutable input(s) [INFO] [stderr] --> src/syncmap.rs:176:55 [INFO] [stderr] | [INFO] [stderr] 176 | fn map_as_mut(&self, _guard : &MutexGuard<()>) -> &mut RwInfo>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::mut_from_ref)] on by default [INFO] [stderr] note: immutable borrow here [INFO] [stderr] --> src/syncmap.rs:176:19 [INFO] [stderr] | [INFO] [stderr] 176 | fn map_as_mut(&self, _guard : &MutexGuard<()>) -> &mut RwInfo>> { [INFO] [stderr] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_from_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/syncmap.rs:188:24 [INFO] [stderr] | [INFO] [stderr] 188 | if let Some(_) = map.value.get(&key){ [INFO] [stderr] | _________________- ^^^^^^^ [INFO] [stderr] 189 | | drop(guard); [INFO] [stderr] 190 | | self.condvar.notify_all(); [INFO] [stderr] 191 | | return Ok(()); [INFO] [stderr] 192 | | } [INFO] [stderr] | |_________________- help: try this: `if map.value.get(&key).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syncmap.rs:284:13 [INFO] [stderr] | [INFO] [stderr] 284 | map.value.get(reader).unwrap().unread(&guard); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&map.value[reader]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syncmap.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | map.value.get(writer).unwrap().unwrite(&guard); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&map.value[writer]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/state.rs:124:12 [INFO] [stderr] | [INFO] [stderr] 124 | if self.stack.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/state.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | / loop { [INFO] [stderr] 128 | | match self.update() { [INFO] [stderr] 129 | | UpdateStatus::Continue => continue, [INFO] [stderr] 130 | | UpdateStatus::Exit => break, [INFO] [stderr] 131 | | } [INFO] [stderr] 132 | | } [INFO] [stderr] | |_________^ help: try: `while let UpdateStatus::Continue = self.update() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resources.rs:324:51 [INFO] [stderr] | [INFO] [stderr] 324 | pub fn unpack(&self) -> Option<&Box>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&ComponentVector` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/resources.rs:331:29 [INFO] [stderr] | [INFO] [stderr] 331 | transmute::<&Box, &Box>>(value) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(value as *const std::boxed::Box as *const std::boxed::Box>)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resources.rs:342:62 [INFO] [stderr] | [INFO] [stderr] 342 | pub fn unpack_mut(&self) -> Option>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut ComponentVector` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/entity.rs:52:55 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn with(self, comp : T, mut write : RefMut<&mut Box>>) -> Self where T : Component { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut ComponentVector` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `ecs`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/main.rs:46:26 [INFO] [stderr] | [INFO] [stderr] 46 | fn update(&mut self, token : ResourceToken) -> Trans { [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Push` [INFO] [stderr] --> src/state.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | Push(State), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Swap` [INFO] [stderr] --> src/state.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | Swap(State), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `type_id` [INFO] [stderr] --> src/resources.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | type_id: TypeId, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CompVecIter` [INFO] [stderr] --> src/resources.rs:227:1 [INFO] [stderr] | [INFO] [stderr] 227 | pub struct CompVecIter<'a, D : Component> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/resources.rs:232:5 [INFO] [stderr] | [INFO] [stderr] 232 | fn new(vector : &'a ComponentVector) -> CompVecIter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `loan` [INFO] [stderr] --> src/resources.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | pub fn loan(&self) -> Option<&Loan<'a,TypeId,Box>>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unpack` [INFO] [stderr] --> src/resources.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | pub fn unpack(&self) -> Option<&Box>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read` [INFO] [stderr] --> src/resources.rs:376:5 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn read(&mut self) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CompB` [INFO] [stderr] --> src/resources.rs:399:5 [INFO] [stderr] | [INFO] [stderr] 399 | struct CompB { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/resources.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | fn new(id : u64) -> CompB { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `id` [INFO] [stderr] --> src/entity.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn id(&self) -> u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: mutable borrow from immutable input(s) [INFO] [stderr] --> src/syncmap.rs:176:55 [INFO] [stderr] | [INFO] [stderr] 176 | fn map_as_mut(&self, _guard : &MutexGuard<()>) -> &mut RwInfo>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::mut_from_ref)] on by default [INFO] [stderr] note: immutable borrow here [INFO] [stderr] --> src/syncmap.rs:176:19 [INFO] [stderr] | [INFO] [stderr] 176 | fn map_as_mut(&self, _guard : &MutexGuard<()>) -> &mut RwInfo>> { [INFO] [stderr] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_from_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/syncmap.rs:188:24 [INFO] [stderr] | [INFO] [stderr] 188 | if let Some(_) = map.value.get(&key){ [INFO] [stderr] | _________________- ^^^^^^^ [INFO] [stderr] 189 | | drop(guard); [INFO] [stderr] 190 | | self.condvar.notify_all(); [INFO] [stderr] 191 | | return Ok(()); [INFO] [stderr] 192 | | } [INFO] [stderr] | |_________________- help: try this: `if map.value.get(&key).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syncmap.rs:284:13 [INFO] [stderr] | [INFO] [stderr] 284 | map.value.get(reader).unwrap().unread(&guard); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&map.value[reader]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syncmap.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | map.value.get(writer).unwrap().unwrite(&guard); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&map.value[writer]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let mut _zero_2 =` [INFO] [stderr] --> src/syncmap.rs:436:9 [INFO] [stderr] | [INFO] [stderr] 436 | / let mut _zero_2 = match loan.write(&0) { [INFO] [stderr] 437 | | Some(_) => assert!(false, "zero_2 write returned"), [INFO] [stderr] 438 | | None => (), [INFO] [stderr] 439 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [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/syncmap.rs:436:27 [INFO] [stderr] | [INFO] [stderr] 436 | let mut _zero_2 = match loan.write(&0) { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 437 | | Some(_) => assert!(false, "zero_2 write returned"), [INFO] [stderr] 438 | | None => (), [INFO] [stderr] 439 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Some(_) = loan.write(&0) { assert!(false, "zero_2 write returned") }` [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] [INFO] [stderr] warning: this looks like you are swapping `*z` and `*o` manually [INFO] [stderr] --> src/syncmap.rs:442:13 [INFO] [stderr] | [INFO] [stderr] 442 | / let t = *z; [INFO] [stderr] 443 | | *z = *o; [INFO] [stderr] 444 | | *o = t; [INFO] [stderr] | |__________________^ help: try: `std::mem::swap(&mut (*z), &mut (*o))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in zero.iter().zip(one.iter()).enumerate()` or similar iterators [INFO] [stderr] --> src/syncmap.rs:448:22 [INFO] [stderr] | [INFO] [stderr] 448 | for (z,o) in zero.iter().zip(one.iter()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/state.rs:124:12 [INFO] [stderr] | [INFO] [stderr] 124 | if self.stack.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/state.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | / loop { [INFO] [stderr] 128 | | match self.update() { [INFO] [stderr] 129 | | UpdateStatus::Continue => continue, [INFO] [stderr] 130 | | UpdateStatus::Exit => break, [INFO] [stderr] 131 | | } [INFO] [stderr] 132 | | } [INFO] [stderr] | |_________^ help: try: `while let UpdateStatus::Continue = self.update() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resources.rs:324:51 [INFO] [stderr] | [INFO] [stderr] 324 | pub fn unpack(&self) -> Option<&Box>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&ComponentVector` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/resources.rs:331:29 [INFO] [stderr] | [INFO] [stderr] 331 | transmute::<&Box, &Box>>(value) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(value as *const std::boxed::Box as *const std::boxed::Box>)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/resources.rs:342:62 [INFO] [stderr] | [INFO] [stderr] 342 | pub fn unpack_mut(&self) -> Option>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut ComponentVector` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:427:9 [INFO] [stderr] | [INFO] [stderr] 427 | let _ = cv.push(a, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:428:9 [INFO] [stderr] | [INFO] [stderr] 428 | let _ = cv.push(b, 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:429:9 [INFO] [stderr] | [INFO] [stderr] 429 | let _ = cv.push(c, 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:455:9 [INFO] [stderr] | [INFO] [stderr] 455 | let _ = cv.push(a, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:456:9 [INFO] [stderr] | [INFO] [stderr] 456 | let _ = cv.push(b, 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:457:9 [INFO] [stderr] | [INFO] [stderr] 457 | let _ = cv.push(c, 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:458:9 [INFO] [stderr] | [INFO] [stderr] 458 | let _ = cv.push(d, 3); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | let _ = cv.push(e, 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:460:9 [INFO] [stderr] | [INFO] [stderr] 460 | let _ = cv.push(f, 5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/resources.rs:498:9 [INFO] [stderr] | [INFO] [stderr] 498 | let _ = cv.push(g, 6); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/entity.rs:52:55 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn with(self, comp : T, mut write : RefMut<&mut Box>>) -> Self where T : Component { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut ComponentVector` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `ecs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e353cc1262b66136bc33e551d129531c5763f7fa3a29264e8d9b261297f355d5"` [INFO] running `"docker" "rm" "-f" "e353cc1262b66136bc33e551d129531c5763f7fa3a29264e8d9b261297f355d5"` [INFO] [stdout] e353cc1262b66136bc33e551d129531c5763f7fa3a29264e8d9b261297f355d5