[INFO] crate theban_interval_tree 0.7.1 is already in cache [INFO] extracting crate theban_interval_tree 0.7.1 into work/ex/clippy-test-run/sources/stable/reg/theban_interval_tree/0.7.1 [INFO] extracting crate theban_interval_tree 0.7.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/theban_interval_tree/0.7.1 [INFO] validating manifest of theban_interval_tree-0.7.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 theban_interval_tree-0.7.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 theban_interval_tree-0.7.1 [INFO] finished frobbing theban_interval_tree-0.7.1 [INFO] frobbed toml for theban_interval_tree-0.7.1 written to work/ex/clippy-test-run/sources/stable/reg/theban_interval_tree/0.7.1/Cargo.toml [INFO] started frobbing theban_interval_tree-0.7.1 [INFO] finished frobbing theban_interval_tree-0.7.1 [INFO] frobbed toml for theban_interval_tree-0.7.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/theban_interval_tree/0.7.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 theban_interval_tree-0.7.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/theban_interval_tree/0.7.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] cc58f40acc282c64df8f53fca870703aec1e553cf6f729a781007cf83314574d [INFO] running `"docker" "start" "-a" "cc58f40acc282c64df8f53fca870703aec1e553cf6f729a781007cf83314574d"` [INFO] [stderr] Checking theban_interval_tree v0.7.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/node.rs:18:19 [INFO] [stderr] | [INFO] [stderr] 18 | Node::{key: key, data: data, height: 1, max: key.max, left: None, right: None} [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/node.rs:18:29 [INFO] [stderr] | [INFO] [stderr] 18 | Node::{key: key, data: data, height: 1, max: key.max, left: None, right: None} [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/iterators.rs:27:56 [INFO] [stderr] | [INFO] [stderr] 27 | RangePairIter{ range: Range::new(lower,upper), stack: stack} [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stack` [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/node.rs:18:19 [INFO] [stderr] | [INFO] [stderr] 18 | Node::{key: key, data: data, height: 1, max: key.max, left: None, right: None} [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/node.rs:18:29 [INFO] [stderr] | [INFO] [stderr] 18 | Node::{key: key, data: data, height: 1, max: key.max, left: None, right: None} [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/iterators.rs:27:56 [INFO] [stderr] | [INFO] [stderr] 27 | RangePairIter{ range: Range::new(lower,upper), stack: stack} [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stack` [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: unneeded return statement [INFO] [stderr] --> src/node.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | return range.max >= self.key.min [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `range.max >= self.key.min` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | return self.max >= range.min [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.max >= range.min` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | return node.as_ref().map_or(0, |succ| succ.height) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `node.as_ref().map_or(0, |succ| succ.height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | return node.as_ref().map_or(0, |succ| succ.max) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `node.as_ref().map_or(0, |succ| succ.max)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | return new_root_box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_root_box` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | return new_root_box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_root_box` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | return rotate_if_necessary(root) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `rotate_if_necessary(root)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | return Some(root); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(root)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Visit` [INFO] [stderr] --> src/iterators.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | / enum VisitingState { [INFO] [stderr] 8 | | VisitLeft, [INFO] [stderr] 9 | | VisitCenter, [INFO] [stderr] 10 | | VisitRight [INFO] [stderr] 11 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/iterators.rs:57:45 [INFO] [stderr] | [INFO] [stderr] 57 | if node.key.intersect(&self.range){ return Some(node) } else { return self.get_next_node() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(node)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/iterators.rs:57:72 [INFO] [stderr] | [INFO] [stderr] 57 | if node.key.intersect(&self.range){ return Some(node) } else { return self.get_next_node() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.get_next_node()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | return range.max >= self.key.min [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `range.max >= self.key.min` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | return self.max >= range.min [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.max >= range.min` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | return node.as_ref().map_or(0, |succ| succ.height) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `node.as_ref().map_or(0, |succ| succ.height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | return node.as_ref().map_or(0, |succ| succ.max) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `node.as_ref().map_or(0, |succ| succ.max)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | return new_root_box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_root_box` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | return new_root_box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_root_box` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | return rotate_if_necessary(root) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `rotate_if_necessary(root)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | return Some(root); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(root)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/node.rs:280:5 [INFO] [stderr] | [INFO] [stderr] 280 | return sorted && balanced && proper_max; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `sorted && balanced && proper_max` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | return memrange::Range::new(offset, offset+len) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `memrange::Range::new(offset, offset+len)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Visit` [INFO] [stderr] --> src/iterators.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | / enum VisitingState { [INFO] [stderr] 8 | | VisitLeft, [INFO] [stderr] 9 | | VisitCenter, [INFO] [stderr] 10 | | VisitRight [INFO] [stderr] 11 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/iterators.rs:57:45 [INFO] [stderr] | [INFO] [stderr] 57 | if node.key.intersect(&self.range){ return Some(node) } else { return self.get_next_node() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(node)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/iterators.rs:57:72 [INFO] [stderr] | [INFO] [stderr] 57 | if node.key.intersect(&self.range){ return Some(node) } else { return self.get_next_node() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.get_next_node()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:87:39 [INFO] [stderr] | [INFO] [stderr] 87 | fn diff_of_successors_height(root: &Box>) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:135:41 [INFO] [stderr] | [INFO] [stderr] 135 | pub fn search<'a, D>(key: &Range, root: &'a Box>) -> Option<&'a D>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Node` [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/node.rs:140:45 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn search_pair<'a,D>(key: &Range, root: &'a Box>) -> Option<(&'a Range,&'a D)>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Node` [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: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/node.rs:143:27 [INFO] [stderr] | [INFO] [stderr] 143 | Ordering::Less => root.right.as_ref().map_or(None, |succ| search_pair(key, succ)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `root.right.as_ref().and_then(|succ| search_pair(key, succ))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_or_none)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/node.rs:144:30 [INFO] [stderr] | [INFO] [stderr] 144 | Ordering::Greater => root.left.as_ref().map_or(None, |succ| search_pair(key, succ)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `root.left.as_ref().and_then(|succ| search_pair(key, succ))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:172:26 [INFO] [stderr] | [INFO] [stderr] 172 | pub fn min_pair(root: &Box>) -> (&Range,&D) { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:177:26 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn max_pair(root: &Box>) -> (&Range,&D) { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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: local variable doesn't need to be boxed here [INFO] [stderr] --> src/node.rs:225:19 [INFO] [stderr] | [INFO] [stderr] 225 | fn delete_root(mut root: Box>) -> Option>> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::boxed_local)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `tree::IntervalTree` [INFO] [stderr] --> src/tree.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> IntervalTree{ [INFO] [stderr] 21 | | IntervalTree{root: None} [INFO] [stderr] 22 | | } [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] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | / pub fn min<'a>(&'a self) -> Option<(&'a Range,&'a D)> { [INFO] [stderr] 148 | | match self.root { [INFO] [stderr] 149 | | Some(ref root) => Some(min_pair(root)), [INFO] [stderr] 150 | | None => None [INFO] [stderr] 151 | | } [INFO] [stderr] 152 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | / pub fn max<'a>(&'a self) -> Option<(&'a Range,&'a D)> { [INFO] [stderr] 169 | | match self.root { [INFO] [stderr] 170 | | Some(ref root) => Some(max_pair(root)), [INFO] [stderr] 171 | | None => None [INFO] [stderr] 172 | | } [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/iterators.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | self.get_next_node().map_or(None, |n| Some((n.key, &n.data))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `self.get_next_node().and_then(|n| Some((n.key, &n.data)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:87:39 [INFO] [stderr] | [INFO] [stderr] 87 | fn diff_of_successors_height(root: &Box>) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:135:41 [INFO] [stderr] | [INFO] [stderr] 135 | pub fn search<'a, D>(key: &Range, root: &'a Box>) -> Option<&'a D>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Node` [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/node.rs:140:45 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn search_pair<'a,D>(key: &Range, root: &'a Box>) -> Option<(&'a Range,&'a D)>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Node` [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: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/node.rs:143:27 [INFO] [stderr] | [INFO] [stderr] 143 | Ordering::Less => root.right.as_ref().map_or(None, |succ| search_pair(key, succ)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `root.right.as_ref().and_then(|succ| search_pair(key, succ))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_or_none)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/node.rs:144:30 [INFO] [stderr] | [INFO] [stderr] 144 | Ordering::Greater => root.left.as_ref().map_or(None, |succ| search_pair(key, succ)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `root.left.as_ref().and_then(|succ| search_pair(key, succ))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:151:39 [INFO] [stderr] | [INFO] [stderr] 151 | pub fn contains(key: &Range, root: &Box> ) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:158:43 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn min_after<'a,D>(key: &Range, root: &'a Box>) -> Option<(&'a Range,&'a D)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Node` [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: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/node.rs:160:29 [INFO] [stderr] | [INFO] [stderr] 160 | Ordering::Equal => root.right.as_ref().map_or(None, |succ| Some(min_pair(succ))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `root.right.as_ref().and_then(|succ| Some(min_pair(succ)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/node.rs:161:29 [INFO] [stderr] | [INFO] [stderr] 161 | Ordering::Less => root.right.as_ref().map_or(None, |succ| min_after(key, succ)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `root.right.as_ref().and_then(|succ| min_after(key, succ))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/node.rs:164:57 [INFO] [stderr] | [INFO] [stderr] 164 | Some(ref succ) => min_after(key, &succ).or( Some((&root.key,&root.data)) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| Some((&root.key,&root.data)))` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:172:26 [INFO] [stderr] | [INFO] [stderr] 172 | pub fn min_pair(root: &Box>) -> (&Range,&D) { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:177:26 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn max_pair(root: &Box>) -> (&Range,&D) { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:183:21 [INFO] [stderr] | [INFO] [stderr] 183 | pub fn min(root: &Box>) -> &D { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:189:21 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn max(root: &Box>) -> &D { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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: local variable doesn't need to be boxed here [INFO] [stderr] --> src/node.rs:225:19 [INFO] [stderr] | [INFO] [stderr] 225 | fn delete_root(mut root: Box>) -> Option>> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::boxed_local)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/node.rs:262:14 [INFO] [stderr] | [INFO] [stderr] 262 | for x in 2..size+1 { [INFO] [stderr] | ^^^^^^^^^ help: use: `2..=size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/node.rs:268:28 [INFO] [stderr] | [INFO] [stderr] 268 | fn is_sorted_left(node: &Box>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:272:29 [INFO] [stderr] | [INFO] [stderr] 272 | fn is_sorted_right(node: &Box>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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/node.rs:276:30 [INFO] [stderr] | [INFO] [stderr] 276 | fn is_interval_node(node: &Box>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Node` [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 should consider deriving a `Default` implementation for `tree::IntervalTree` [INFO] [stderr] --> src/tree.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> IntervalTree{ [INFO] [stderr] 21 | | IntervalTree{root: None} [INFO] [stderr] 22 | | } [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] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | / pub fn min<'a>(&'a self) -> Option<(&'a Range,&'a D)> { [INFO] [stderr] 148 | | match self.root { [INFO] [stderr] 149 | | Some(ref root) => Some(min_pair(root)), [INFO] [stderr] 150 | | None => None [INFO] [stderr] 151 | | } [INFO] [stderr] 152 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | / pub fn max<'a>(&'a self) -> Option<(&'a Range,&'a D)> { [INFO] [stderr] 169 | | match self.root { [INFO] [stderr] 170 | | Some(ref root) => Some(max_pair(root)), [INFO] [stderr] 171 | | None => None [INFO] [stderr] 172 | | } [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/iterators.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | self.get_next_node().map_or(None, |n| Some((n.key, &n.data))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using and_then instead: `self.get_next_node().and_then(|n| Some((n.key, &n.data)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> tests/lib.rs:169:5 [INFO] [stderr] | [INFO] [stderr] 169 | return Range::new(offset, offset+len) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Range::new(offset, offset+len)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> tests/lib.rs:191:70 [INFO] [stderr] | [INFO] [stderr] 191 | let should = set.iter().filter(|r| query.intersect(r) ).map(|&r| r.clone()).collect::>(); [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `r` [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] Finished dev [unoptimized + debuginfo] target(s) in 2.89s [INFO] running `"docker" "inspect" "cc58f40acc282c64df8f53fca870703aec1e553cf6f729a781007cf83314574d"` [INFO] running `"docker" "rm" "-f" "cc58f40acc282c64df8f53fca870703aec1e553cf6f729a781007cf83314574d"` [INFO] [stdout] cc58f40acc282c64df8f53fca870703aec1e553cf6f729a781007cf83314574d