[INFO] crate sophia 0.1.0 is already in cache [INFO] extracting crate sophia 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/sophia/0.1.0 [INFO] extracting crate sophia 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/sophia/0.1.0 [INFO] validating manifest of sophia-0.1.0 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 sophia-0.1.0 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 sophia-0.1.0 [INFO] finished frobbing sophia-0.1.0 [INFO] frobbed toml for sophia-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/sophia/0.1.0/Cargo.toml [INFO] started frobbing sophia-0.1.0 [INFO] finished frobbing sophia-0.1.0 [INFO] frobbed toml for sophia-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/sophia/0.1.0/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 sophia-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/sophia/0.1.0:/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] ba38cc56081df40fa9f3f5ec57963be346a9866cb68bae5a46ddb45f208dc479 [INFO] running `"docker" "start" "-a" "ba38cc56081df40fa9f3f5ec57963be346a9866cb68bae5a46ddb45f208dc479"` [INFO] [stderr] Checking weak-table v0.2.3 [INFO] [stderr] Checking resiter v0.2.0 [INFO] [stderr] Compiling language-tag v0.9.0 [INFO] [stderr] Compiling pest_generator v2.1.0 [INFO] [stderr] Checking error-chain v0.12.0 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Checking sophia v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parsers/nt.rs:35:18 [INFO] [stderr] | [INFO] [stderr] 35 | const _GRAMMAR: &'static str = include_str!("nt.pest"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/streams.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | return sink.finish().as_downstream() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `sink.finish().as_downstream()` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/term/iri_rfc3987.rs:7:18 [INFO] [stderr] | [INFO] [stderr] 7 | const _GRAMMAR: &'static str = include_str!("iri_rfc3987.pest"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/term/iri_data.rs:163:16 [INFO] [stderr] | [INFO] [stderr] 163 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 164 | | if let Some(npos) = ns.rfind(&sep[..]) { [INFO] [stderr] 165 | | IriData { [INFO] [stderr] 166 | | ns: factory(&ns[..npos+1]), [INFO] [stderr] ... | [INFO] [stderr] 176 | | } [INFO] [stderr] 177 | | } [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] 163 | } else if let Some(npos) = ns.rfind(&sep[..]) { [INFO] [stderr] 164 | IriData { [INFO] [stderr] 165 | ns: factory(&ns[..npos+1]), [INFO] [stderr] 166 | suffix: Some(factory(&ns[npos+1..])), [INFO] [stderr] 167 | absolute, [INFO] [stderr] 168 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parsers/nt.rs:35:18 [INFO] [stderr] | [INFO] [stderr] 35 | const _GRAMMAR: &'static str = include_str!("nt.pest"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/streams.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | return sink.finish().as_downstream() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `sink.finish().as_downstream()` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/term/iri_rfc3987.rs:7:18 [INFO] [stderr] | [INFO] [stderr] 7 | const _GRAMMAR: &'static str = include_str!("iri_rfc3987.pest"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/term/iri_data.rs:163:16 [INFO] [stderr] | [INFO] [stderr] 163 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 164 | | if let Some(npos) = ns.rfind(&sep[..]) { [INFO] [stderr] 165 | | IriData { [INFO] [stderr] 166 | | ns: factory(&ns[..npos+1]), [INFO] [stderr] ... | [INFO] [stderr] 176 | | } [INFO] [stderr] 177 | | } [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] 163 | } else if let Some(npos) = ns.rfind(&sep[..]) { [INFO] [stderr] 164 | IriData { [INFO] [stderr] 165 | ns: factory(&ns[..npos+1]), [INFO] [stderr] 166 | suffix: Some(factory(&ns[npos+1..])), [INFO] [stderr] 167 | absolute, [INFO] [stderr] 168 | } [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/graph/index.rs:248:5 [INFO] [stderr] | [INFO] [stderr] 248 | / fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self> { [INFO] [stderr] 249 | | Box::from( [INFO] [stderr] 250 | | self.triples.iter() [INFO] [stderr] 251 | | .map(move |(si, pi, oi)| Ok(( [INFO] [stderr] ... | [INFO] [stderr] 256 | | ) [INFO] [stderr] 257 | | } [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/graph/inmem/wrapper.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / fn gw_iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self::Wrapped> { [INFO] [stderr] 31 | | self.get_wrapped().iter() [INFO] [stderr] 32 | | } [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:21:11 [INFO] [stderr] | [INFO] [stderr] 21 | sp2o: HashMap<(T::Index, T::Index), Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:58:25 [INFO] [stderr] | [INFO] [stderr] 58 | self.sp2o.get(&(si, *pi)).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.sp2o[&(si, *pi)]` [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/graph/inmem/spo_wrapper.rs:101:27 [INFO] [stderr] | [INFO] [stderr] 101 | let min = self.s2p.get(&si).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.s2p[&si]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:113:26 [INFO] [stderr] | [INFO] [stderr] 113 | let nb = self.sp2o.get(&(si, pi)).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.sp2o[&(si, pi)]` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/graph/inmem/wrapper.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self> { [INFO] [stderr] 165 | | GraphWrapper::gw_iter(self) [INFO] [stderr] 166 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/graph/inmem/spo_wrapper.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | impl_graph_for_wrapper!(); [INFO] [stderr] | -------------------------- in this macro invocation [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: redundant closure found [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:152:47 [INFO] [stderr] | [INFO] [stderr] 152 | self.s2p.entry(si).or_insert_with(|| Vec::new()).push(pi); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:153:54 [INFO] [stderr] | [INFO] [stderr] 153 | self.sp2o.entry((si, pi)).or_insert_with(|| Vec::new()).push(oi); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:21:11 [INFO] [stderr] | [INFO] [stderr] 21 | po2s: HashMap<(T::Index, T::Index), Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | self.po2s.get(&(*pi, oi)).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.po2s[&(*pi, oi)]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:101:27 [INFO] [stderr] | [INFO] [stderr] 101 | let min = self.o2p.get(&oi).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.o2p[&oi]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:113:26 [INFO] [stderr] | [INFO] [stderr] 113 | let nb = self.po2s.get(&(pi, oi)).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.po2s[&(pi, oi)]` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/graph/inmem/wrapper.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self> { [INFO] [stderr] 165 | | GraphWrapper::gw_iter(self) [INFO] [stderr] 166 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/graph/inmem/ops_wrapper.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | impl_graph_for_wrapper!(); [INFO] [stderr] | -------------------------- in this macro invocation [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: redundant closure found [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:152:47 [INFO] [stderr] | [INFO] [stderr] 152 | self.o2p.entry(oi).or_insert_with(|| Vec::new()).push(pi); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:153:54 [INFO] [stderr] | [INFO] [stderr] 153 | self.po2s.entry((pi, oi)).or_insert_with(|| Vec::new()).push(si); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/graph/ext_impl.rs:48:19 [INFO] [stderr] | [INFO] [stderr] 48 | impl Graph for HashSet where [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 48 | impl Graph for HashSet where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/graph/ext_impl.rs:66:23 [INFO] [stderr] | [INFO] [stderr] 66 | impl MutableGraph for HashSet<(BoxTerm, BoxTerm, BoxTerm)> where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 66 | impl MutableGraph for HashSet<(BoxTerm, BoxTerm, BoxTerm), S> where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/graph/ext_impl.rs:90:22 [INFO] [stderr] | [INFO] [stderr] 90 | impl SetGraph for HashSet<(Term, Term, Term)> where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 90 | impl SetGraph for HashSet<(Term, Term, Term), S> where [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/graph/traits.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self>; [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: identical conversion [INFO] [stderr] --> src/graph/traits.rs:152:47 [INFO] [stderr] | [INFO] [stderr] 152 | (Some(s), Some(p), Some(o)) => Box::from( [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 153 | | self.iter_for_spo(s, p, o)) [INFO] [stderr] | |___________________________________________^ help: consider removing `Box::from()`: `self.iter_for_spo(s, p, o)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/parsers/common.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn parse_str<'a>(txt: &'a str) -> $str_parser { [INFO] [stderr] 31 | | Config::default().parse_str(txt) [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/parsers/nt.rs:74:1 [INFO] [stderr] | [INFO] [stderr] 74 | def_default_parser_api!(IoParser, StrParser); [INFO] [stderr] | --------------------------------------------- in this macro invocation [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: length comparison to zero [INFO] [stderr] --> src/parsers/nt.rs:104:16 [INFO] [stderr] | [INFO] [stderr] 104 | if line.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/parsers/nt.rs:105:38 [INFO] [stderr] | [INFO] [stderr] 105 | || line.as_bytes()[0] == '#' as u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'#' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | .map_err(|err| Downstream(err))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:114:22 [INFO] [stderr] | [INFO] [stderr] 114 | .map_err(|err| Downstream(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:149:26 [INFO] [stderr] | [INFO] [stderr] 149 | .map_err(|err| Downstream(err))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | .map_err(|err| Downstream(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | w.write_all(" ".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | w.write_all(" ".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:100:25 [INFO] [stderr] | [INFO] [stderr] 100 | w.write_all("<".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"<"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:102:25 [INFO] [stderr] | [INFO] [stderr] 102 | w.write_all(">".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b">"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:105:25 [INFO] [stderr] | [INFO] [stderr] 105 | w.write_all("_:".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"_:"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:123:29 [INFO] [stderr] | [INFO] [stderr] 123 | w.write_all("^^<".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"^^<"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:125:29 [INFO] [stderr] | [INFO] [stderr] 125 | w.write_all(">".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b">"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | w.write_all("?".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"?"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:159:35 [INFO] [stderr] | [INFO] [stderr] 159 | '\n' => { w.write_all(r"\n".as_bytes())?; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br"\n"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:160:35 [INFO] [stderr] | [INFO] [stderr] 160 | '\r' => { w.write_all(r"\r".as_bytes())?; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br"\r"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:162:35 [INFO] [stderr] | [INFO] [stderr] 162 | '\\' => { w.write_all(r"\\".as_bytes())?; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br"\\"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/serializers/nt.rs:172:23 [INFO] [stderr] | [INFO] [stderr] 172 | if val < 10 { ('0' as u8) + val } [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/serializers/nt.rs:173:23 [INFO] [stderr] | [INFO] [stderr] 173 | else { ('a' as u8) + val } [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | w.write_all("_".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"_"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:182:17 [INFO] [stderr] | [INFO] [stderr] 182 | w.write_all("_:_".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"_:_"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/streams.rs:77:29 [INFO] [stderr] | [INFO] [stderr] 77 | fn wrap_as_oks(self) -> Map Result>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/streams.rs:83:29 [INFO] [stderr] | [INFO] [stderr] 83 | fn wrap_as_oks(self) -> Map Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:90:24 [INFO] [stderr] | [INFO] [stderr] 90 | if subpair.as_str().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!subpair.as_str().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:160:20 [INFO] [stderr] | [INFO] [stderr] 160 | if iri_ref.path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `iri_ref.path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/term/iri_rfc3987.rs:180:43 [INFO] [stderr] | [INFO] [stderr] 180 | fn merge<'a> (base: &ParsedIri<'a>, path: &Vec<&'a str>) -> Vec<&'a str> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[&'a str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:182:36 [INFO] [stderr] | [INFO] [stderr] 182 | if base.authority.is_some() && base.path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `base.path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/term/iri_rfc3987.rs:185:14 [INFO] [stderr] | [INFO] [stderr] 185 | v.extend(base.path.iter().take(base.path.len()-1).map(|txt| *txt)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `base.path.iter().take(base.path.len()-1).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/term/iri_rfc3987.rs:186:14 [INFO] [stderr] | [INFO] [stderr] 186 | v.extend(path.iter().map(|txt| *txt)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `path.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:191:8 [INFO] [stderr] | [INFO] [stderr] 191 | if path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/term/convert.rs:17:18 [INFO] [stderr] | [INFO] [stderr] 17 | let dt = xsd::string.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `xsd::string` [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: item `term::iri_data::IriData` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/term/iri_data.rs:27:1 [INFO] [stderr] | [INFO] [stderr] 27 | / impl IriData where [INFO] [stderr] 28 | | T: Borrow, [INFO] [stderr] 29 | | { [INFO] [stderr] 30 | | /// The length of this IRI. [INFO] [stderr] ... | [INFO] [stderr] 185 | | } [INFO] [stderr] 186 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/term/iri_data.rs:141:41 [INFO] [stderr] | [INFO] [stderr] 141 | new_ns.push_str(&suffix[..spos+1]); [INFO] [stderr] | ^^^^^^^^ help: use: `..=spos` [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: an inclusive range would be more readable [INFO] [stderr] --> src/term/iri_data.rs:152:37 [INFO] [stderr] | [INFO] [stderr] 152 | ns: factory(&ns[..npos+1]), [INFO] [stderr] | ^^^^^^^^ help: use: `..=npos` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/term/iri_data.rs:166:37 [INFO] [stderr] | [INFO] [stderr] 166 | ns: factory(&ns[..npos+1]), [INFO] [stderr] | ^^^^^^^^ help: use: `..=npos` [INFO] [stderr] | [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/term/literal_kind.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / pub fn normalized_with<'a, U, F> (other: &'a LiteralKind, mut factory: F, norm: Normalization) -> LiteralKind where [INFO] [stderr] 32 | | U: Borrow, [INFO] [stderr] 33 | | F: FnMut(&str) -> T, [INFO] [stderr] 34 | | { [INFO] [stderr] ... | [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/term/mod.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / pub fn normalized_with<'a, U, F> (other: &'a Term, mut factory: F, norm: Normalization) -> Term where [INFO] [stderr] 222 | | U: Borrow, [INFO] [stderr] 223 | | F: FnMut(&str) -> T, [INFO] [stderr] 224 | | { [INFO] [stderr] ... | [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/term/mod.rs:343:23 [INFO] [stderr] | [INFO] [stderr] 343 | pub fn batch_join<'a, F, U> (&self, task: F) where [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_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/graph/index.rs:248:5 [INFO] [stderr] | [INFO] [stderr] 248 | / fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self> { [INFO] [stderr] 249 | | Box::from( [INFO] [stderr] 250 | | self.triples.iter() [INFO] [stderr] 251 | | .map(move |(si, pi, oi)| Ok(( [INFO] [stderr] ... | [INFO] [stderr] 256 | | ) [INFO] [stderr] 257 | | } [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/graph/inmem/wrapper.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / fn gw_iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self::Wrapped> { [INFO] [stderr] 31 | | self.get_wrapped().iter() [INFO] [stderr] 32 | | } [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:21:11 [INFO] [stderr] | [INFO] [stderr] 21 | sp2o: HashMap<(T::Index, T::Index), Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:58:25 [INFO] [stderr] | [INFO] [stderr] 58 | self.sp2o.get(&(si, *pi)).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.sp2o[&(si, *pi)]` [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/graph/inmem/spo_wrapper.rs:101:27 [INFO] [stderr] | [INFO] [stderr] 101 | let min = self.s2p.get(&si).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.s2p[&si]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:113:26 [INFO] [stderr] | [INFO] [stderr] 113 | let nb = self.sp2o.get(&(si, pi)).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.sp2o[&(si, pi)]` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/graph/inmem/wrapper.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self> { [INFO] [stderr] 165 | | GraphWrapper::gw_iter(self) [INFO] [stderr] 166 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/graph/inmem/spo_wrapper.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | impl_graph_for_wrapper!(); [INFO] [stderr] | -------------------------- in this macro invocation [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: redundant closure found [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:152:47 [INFO] [stderr] | [INFO] [stderr] 152 | self.s2p.entry(si).or_insert_with(|| Vec::new()).push(pi); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/graph/inmem/spo_wrapper.rs:153:54 [INFO] [stderr] | [INFO] [stderr] 153 | self.sp2o.entry((si, pi)).or_insert_with(|| Vec::new()).push(oi); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:21:11 [INFO] [stderr] | [INFO] [stderr] 21 | po2s: HashMap<(T::Index, T::Index), Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | self.po2s.get(&(*pi, oi)).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.po2s[&(*pi, oi)]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:101:27 [INFO] [stderr] | [INFO] [stderr] 101 | let min = self.o2p.get(&oi).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.o2p[&oi]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:113:26 [INFO] [stderr] | [INFO] [stderr] 113 | let nb = self.po2s.get(&(pi, oi)).unwrap().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.po2s[&(pi, oi)]` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/graph/inmem/wrapper.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self> { [INFO] [stderr] 165 | | GraphWrapper::gw_iter(self) [INFO] [stderr] 166 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/graph/inmem/ops_wrapper.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | impl_graph_for_wrapper!(); [INFO] [stderr] | -------------------------- in this macro invocation [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: redundant closure found [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:152:47 [INFO] [stderr] | [INFO] [stderr] 152 | self.o2p.entry(oi).or_insert_with(|| Vec::new()).push(pi); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/graph/inmem/ops_wrapper.rs:153:54 [INFO] [stderr] | [INFO] [stderr] 153 | self.po2s.entry((pi, oi)).or_insert_with(|| Vec::new()).push(si); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 46 [INFO] [stderr] --> src/graph/inmem/term_index_u.rs:147:1 [INFO] [stderr] | [INFO] [stderr] 147 | / fn test_term_index() { [INFO] [stderr] 148 | | use ::term::factory::RcTermFactory; [INFO] [stderr] 149 | | let mut ti = TermIndexU::::default(); [INFO] [stderr] 150 | | assert_eq!(ti.next_free, 0); [INFO] [stderr] ... | [INFO] [stderr] 214 | | assert_eq!(ti.next_free, 4); [INFO] [stderr] 215 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/graph/ext_impl.rs:48:19 [INFO] [stderr] | [INFO] [stderr] 48 | impl Graph for HashSet where [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 48 | impl Graph for HashSet where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/graph/ext_impl.rs:66:23 [INFO] [stderr] | [INFO] [stderr] 66 | impl MutableGraph for HashSet<(BoxTerm, BoxTerm, BoxTerm)> where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 66 | impl MutableGraph for HashSet<(BoxTerm, BoxTerm, BoxTerm), S> where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/graph/ext_impl.rs:90:22 [INFO] [stderr] | [INFO] [stderr] 90 | impl SetGraph for HashSet<(Term, Term, Term)> where [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 90 | impl SetGraph for HashSet<(Term, Term, Term), S> where [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/graph/traits.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | fn iter<'a> (&'a self) -> GFallibleTripleIterator<'a, Self>; [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: identical conversion [INFO] [stderr] --> src/graph/traits.rs:152:47 [INFO] [stderr] | [INFO] [stderr] 152 | (Some(s), Some(p), Some(o)) => Box::from( [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 153 | | self.iter_for_spo(s, p, o)) [INFO] [stderr] | |___________________________________________^ help: consider removing `Box::from()`: `self.iter_for_spo(s, p, o)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/parsers/common.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | / match parse(rule, val) { [INFO] [stderr] 216 | | Ok(pairs) => { [INFO] [stderr] 217 | | let v: Vec<_> = pairs.collect(); [INFO] [stderr] 218 | | if v.len() != 1 { continue } [INFO] [stderr] ... | [INFO] [stderr] 223 | | Err(_) => {} // pass [INFO] [stderr] 224 | | } [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] 215 | if let Ok(pairs) = parse(rule, val) { [INFO] [stderr] 216 | let v: Vec<_> = pairs.collect(); [INFO] [stderr] 217 | if v.len() != 1 { continue } [INFO] [stderr] 218 | let span = v[0].as_span(); [INFO] [stderr] 219 | if span.start() != 0 || span.end() != val.len() { continue } [INFO] [stderr] 220 | assert!(false, format!("unexpected match {:?}", val)) [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/parsers/common.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | / fn test<'a> (txt: &'a str) -> Result { [INFO] [stderr] 270 | | // parsing a triple just to test that unescape_str works with an offset > 0. [INFO] [stderr] 271 | | let triple = format!("<> <> {}.", txt); [INFO] [stderr] 272 | | let mut pairs = PestNtParser::parse(Rule::triple, &triple[..]).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 283 | | .map_err(|err| format!("{:?}", err)) [INFO] [stderr] 284 | | } [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 `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/parsers/common.rs:274:26 [INFO] [stderr] | [INFO] [stderr] 274 | let object = pairs.skip(2).next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [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/parsers/common.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn parse_str<'a>(txt: &'a str) -> $str_parser { [INFO] [stderr] 31 | | Config::default().parse_str(txt) [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/parsers/nt.rs:74:1 [INFO] [stderr] | [INFO] [stderr] 74 | def_default_parser_api!(IoParser, StrParser); [INFO] [stderr] | --------------------------------------------- in this macro invocation [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: length comparison to zero [INFO] [stderr] --> src/parsers/nt.rs:104:16 [INFO] [stderr] | [INFO] [stderr] 104 | if line.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/parsers/nt.rs:105:38 [INFO] [stderr] | [INFO] [stderr] 105 | || line.as_bytes()[0] == '#' as u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'#' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | .map_err(|err| Downstream(err))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:114:22 [INFO] [stderr] | [INFO] [stderr] 114 | .map_err(|err| Downstream(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:149:26 [INFO] [stderr] | [INFO] [stderr] 149 | .map_err(|err| Downstream(err))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parsers/nt.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | .map_err(|err| Downstream(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Downstream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | w.write_all(" ".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | w.write_all(" ".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:100:25 [INFO] [stderr] | [INFO] [stderr] 100 | w.write_all("<".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"<"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:102:25 [INFO] [stderr] | [INFO] [stderr] 102 | w.write_all(">".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b">"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:105:25 [INFO] [stderr] | [INFO] [stderr] 105 | w.write_all("_:".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"_:"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:123:29 [INFO] [stderr] | [INFO] [stderr] 123 | w.write_all("^^<".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"^^<"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:125:29 [INFO] [stderr] | [INFO] [stderr] 125 | w.write_all(">".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b">"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | w.write_all("?".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"?"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:159:35 [INFO] [stderr] | [INFO] [stderr] 159 | '\n' => { w.write_all(r"\n".as_bytes())?; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br"\n"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:160:35 [INFO] [stderr] | [INFO] [stderr] 160 | '\r' => { w.write_all(r"\r".as_bytes())?; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br"\r"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:162:35 [INFO] [stderr] | [INFO] [stderr] 162 | '\\' => { w.write_all(r"\\".as_bytes())?; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br"\\"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/serializers/nt.rs:172:23 [INFO] [stderr] | [INFO] [stderr] 172 | if val < 10 { ('0' as u8) + val } [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/serializers/nt.rs:173:23 [INFO] [stderr] | [INFO] [stderr] 173 | else { ('a' as u8) + val } [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | w.write_all("_".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"_"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/serializers/nt.rs:182:17 [INFO] [stderr] | [INFO] [stderr] 182 | w.write_all("_:_".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"_:_"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/streams.rs:77:29 [INFO] [stderr] | [INFO] [stderr] 77 | fn wrap_as_oks(self) -> Map Result>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/streams.rs:83:29 [INFO] [stderr] | [INFO] [stderr] 83 | fn wrap_as_oks(self) -> Map Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:90:24 [INFO] [stderr] | [INFO] [stderr] 90 | if subpair.as_str().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!subpair.as_str().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:160:20 [INFO] [stderr] | [INFO] [stderr] 160 | if iri_ref.path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `iri_ref.path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/term/iri_rfc3987.rs:180:43 [INFO] [stderr] | [INFO] [stderr] 180 | fn merge<'a> (base: &ParsedIri<'a>, path: &Vec<&'a str>) -> Vec<&'a str> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[&'a str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:182:36 [INFO] [stderr] | [INFO] [stderr] 182 | if base.authority.is_some() && base.path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `base.path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/term/iri_rfc3987.rs:185:14 [INFO] [stderr] | [INFO] [stderr] 185 | v.extend(base.path.iter().take(base.path.len()-1).map(|txt| *txt)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `base.path.iter().take(base.path.len()-1).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/term/iri_rfc3987.rs:186:14 [INFO] [stderr] | [INFO] [stderr] 186 | v.extend(path.iter().map(|txt| *txt)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `path.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/iri_rfc3987.rs:191:8 [INFO] [stderr] | [INFO] [stderr] 191 | if path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/term/iri_rfc3987.rs:499:26 [INFO] [stderr] | [INFO] [stderr] 499 | const POSITIVE_IRIS: &[(&str, (bool, Option<&str>, Option<&str>, &[&str], Option<&str>, Option<&str>))] = &[ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/term/convert.rs:17:18 [INFO] [stderr] | [INFO] [stderr] 17 | let dt = xsd::string.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `xsd::string` [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: item `term::iri_data::IriData` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/term/iri_data.rs:27:1 [INFO] [stderr] | [INFO] [stderr] 27 | / impl IriData where [INFO] [stderr] 28 | | T: Borrow, [INFO] [stderr] 29 | | { [INFO] [stderr] 30 | | /// The length of this IRI. [INFO] [stderr] ... | [INFO] [stderr] 185 | | } [INFO] [stderr] 186 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/term/iri_data.rs:141:41 [INFO] [stderr] | [INFO] [stderr] 141 | new_ns.push_str(&suffix[..spos+1]); [INFO] [stderr] | ^^^^^^^^ help: use: `..=spos` [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: an inclusive range would be more readable [INFO] [stderr] --> src/term/iri_data.rs:152:37 [INFO] [stderr] | [INFO] [stderr] 152 | ns: factory(&ns[..npos+1]), [INFO] [stderr] | ^^^^^^^^ help: use: `..=npos` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/term/iri_data.rs:166:37 [INFO] [stderr] | [INFO] [stderr] 166 | ns: factory(&ns[..npos+1]), [INFO] [stderr] | ^^^^^^^^ help: use: `..=npos` [INFO] [stderr] | [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/term/literal_kind.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / pub fn normalized_with<'a, U, F> (other: &'a LiteralKind, mut factory: F, norm: Normalization) -> LiteralKind where [INFO] [stderr] 32 | | U: Borrow, [INFO] [stderr] 33 | | F: FnMut(&str) -> T, [INFO] [stderr] 34 | | { [INFO] [stderr] ... | [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/term/mod.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / pub fn normalized_with<'a, U, F> (other: &'a Term, mut factory: F, norm: Normalization) -> Term where [INFO] [stderr] 222 | | U: Borrow, [INFO] [stderr] 223 | | F: FnMut(&str) -> T, [INFO] [stderr] 224 | | { [INFO] [stderr] ... | [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/term/mod.rs:343:23 [INFO] [stderr] | [INFO] [stderr] 343 | pub fn batch_join<'a, F, U> (&self, task: F) where [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/term/test.rs:57:44 [INFO] [stderr] | [INFO] [stderr] 57 | let i2 = IriData::normalized_with(&i1, |txt| String::from(txt), norm); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/test.rs:73:22 [INFO] [stderr] | [INFO] [stderr] 73 | let sf1 = if sf1.len() == 0 { None } else { Some(*sf1) }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sf1.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term/test.rs:74:22 [INFO] [stderr] | [INFO] [stderr] 74 | let sf2 = if sf2.len() == 0 { None } else { Some(String::from(*sf2)) }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sf2.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/term/test.rs:77:48 [INFO] [stderr] | [INFO] [stderr] 77 | let i2 = IriData::normalized_with(&i1, |txt| String::from(txt), norm); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 21.76s [INFO] running `"docker" "inspect" "ba38cc56081df40fa9f3f5ec57963be346a9866cb68bae5a46ddb45f208dc479"` [INFO] running `"docker" "rm" "-f" "ba38cc56081df40fa9f3f5ec57963be346a9866cb68bae5a46ddb45f208dc479"` [INFO] [stdout] ba38cc56081df40fa9f3f5ec57963be346a9866cb68bae5a46ddb45f208dc479