[INFO] crate earth 0.0.2 is already in cache [INFO] extracting crate earth 0.0.2 into work/ex/clippy-test-run/sources/stable/reg/earth/0.0.2 [INFO] extracting crate earth 0.0.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/earth/0.0.2 [INFO] validating manifest of earth-0.0.2 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 earth-0.0.2 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 earth-0.0.2 [INFO] finished frobbing earth-0.0.2 [INFO] frobbed toml for earth-0.0.2 written to work/ex/clippy-test-run/sources/stable/reg/earth/0.0.2/Cargo.toml [INFO] started frobbing earth-0.0.2 [INFO] finished frobbing earth-0.0.2 [INFO] frobbed toml for earth-0.0.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/earth/0.0.2/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 earth-0.0.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/earth/0.0.2:/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] e6bf66acc89bc25f2202ca2d8d2799d734482db387015bcad87577cf664a2014 [INFO] running `"docker" "start" "-a" "e6bf66acc89bc25f2202ca2d8d2799d734482db387015bcad87577cf664a2014"` [INFO] [stderr] Checking earth v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/codecs.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | default_value: default_value [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `default_value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/feed/content.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | mimetype: mimetype, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mimetype` [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/feed/content.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/feed/content.rs:46:17 [INFO] [stderr] | [INFO] [stderr] 46 | mimetype: mimetype, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mimetype` [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/feed/metadata.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/feed/metadata.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | title: title, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `title` [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/feed/metadata.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | updated_at: updated_at, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `updated_at` [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/parser/atom.rs:269:28 [INFO] [stderr] | [INFO] [stderr] 269 | Ok(Some(feed::Person { name: name, uri: uri, email: email })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/atom.rs:269:40 [INFO] [stderr] | [INFO] [stderr] 269 | Ok(Some(feed::Person { name: name, uri: uri, email: email })) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `uri` [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/parser/atom.rs:269:50 [INFO] [stderr] | [INFO] [stderr] 269 | Ok(Some(feed::Person { name: name, uri: uri, email: email })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `email` [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/parser/atom.rs:309:9 [INFO] [stderr] | [INFO] [stderr] 309 | uri: uri, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `uri` [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/parser/atom.rs:310:9 [INFO] [stderr] | [INFO] [stderr] 310 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/parser/base.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | NestedEventReader { reader: reader, finished: false } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/base.rs:163:36 [INFO] [stderr] | [INFO] [stderr] 163 | n::StartDocument { version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/parser/base.rs:164:36 [INFO] [stderr] | [INFO] [stderr] 164 | encoding: encoding, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `encoding` [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/parser/base.rs:165:36 [INFO] [stderr] | [INFO] [stderr] 165 | standalone: standalone }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `standalone` [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/parser/base.rs:173:44 [INFO] [stderr] | [INFO] [stderr] 173 | n::ProcessingInstruction { name: name, data: data }, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/base.rs:173:56 [INFO] [stderr] | [INFO] [stderr] 173 | n::ProcessingInstruction { name: name, data: data }, [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/parser/base.rs:177:25 [INFO] [stderr] | [INFO] [stderr] 177 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/base.rs:179:29 [INFO] [stderr] | [INFO] [stderr] 179 | attributes: attributes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `attributes` [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/parser/base.rs:180:29 [INFO] [stderr] | [INFO] [stderr] 180 | namespace: namespace, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `namespace` [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/stage.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | slot: slot, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `slot` [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/codecs.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | default_value: default_value [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `default_value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/feed/content.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | mimetype: mimetype, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mimetype` [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/feed/content.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/feed/content.rs:46:17 [INFO] [stderr] | [INFO] [stderr] 46 | mimetype: mimetype, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mimetype` [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/feed/metadata.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/feed/metadata.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | title: title, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `title` [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/feed/metadata.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | updated_at: updated_at, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `updated_at` [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/parser/atom.rs:269:28 [INFO] [stderr] | [INFO] [stderr] 269 | Ok(Some(feed::Person { name: name, uri: uri, email: email })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/atom.rs:269:40 [INFO] [stderr] | [INFO] [stderr] 269 | Ok(Some(feed::Person { name: name, uri: uri, email: email })) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `uri` [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/parser/atom.rs:269:50 [INFO] [stderr] | [INFO] [stderr] 269 | Ok(Some(feed::Person { name: name, uri: uri, email: email })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `email` [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/parser/atom.rs:309:9 [INFO] [stderr] | [INFO] [stderr] 309 | uri: uri, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `uri` [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/parser/atom.rs:310:9 [INFO] [stderr] | [INFO] [stderr] 310 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/parser/base.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | NestedEventReader { reader: reader, finished: false } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/base.rs:163:36 [INFO] [stderr] | [INFO] [stderr] 163 | n::StartDocument { version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/parser/base.rs:164:36 [INFO] [stderr] | [INFO] [stderr] 164 | encoding: encoding, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `encoding` [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/parser/base.rs:165:36 [INFO] [stderr] | [INFO] [stderr] 165 | standalone: standalone }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `standalone` [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/parser/base.rs:173:44 [INFO] [stderr] | [INFO] [stderr] 173 | n::ProcessingInstruction { name: name, data: data }, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/base.rs:173:56 [INFO] [stderr] | [INFO] [stderr] 173 | n::ProcessingInstruction { name: name, data: data }, [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/parser/base.rs:177:25 [INFO] [stderr] | [INFO] [stderr] 177 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/base.rs:179:29 [INFO] [stderr] | [INFO] [stderr] 179 | attributes: attributes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `attributes` [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/parser/base.rs:180:29 [INFO] [stderr] | [INFO] [stderr] 180 | namespace: namespace, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `namespace` [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/stage.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | slot: slot, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `slot` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/codecs.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | / macro_rules! try_opt { [INFO] [stderr] 19 | | ($e:expr, $msg:expr) => ( [INFO] [stderr] 20 | | match $e { Some(e) => e, [INFO] [stderr] 21 | | None => return Err(DecodeError($msg, None)) } [INFO] [stderr] ... | [INFO] [stderr] 26 | | ) [INFO] [stderr] 27 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/feed/mod.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | mod feed; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/feed/mod.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | const ATOM_XMLNS: &'static str = "http://www.w3.org/2005/Atom"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/feed/mod.rs:51:20 [INFO] [stderr] | [INFO] [stderr] 51 | const MARK_XMLNS: &'static str = "http://earthreader.org/mark/"; [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: unused macro definition [INFO] [stderr] --> src/codecs.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | / macro_rules! try_opt { [INFO] [stderr] 19 | | ($e:expr, $msg:expr) => ( [INFO] [stderr] 20 | | match $e { Some(e) => e, [INFO] [stderr] 21 | | None => return Err(DecodeError($msg, None)) } [INFO] [stderr] ... | [INFO] [stderr] 26 | | ) [INFO] [stderr] 27 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/codecs.rs:191:78 [INFO] [stderr] | [INFO] [stderr] 191 | FixedOffset::east(0).ymd(2003, 12, 13).and_hms_micro(18, 30, 2, 250000)), [INFO] [stderr] | ^^^^^^ help: consider: `250_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/codecs.rs:195:88 [INFO] [stderr] | [INFO] [stderr] 195 | FixedOffset::east(1 * 60 * 60).ymd(2003, 12, 13).and_hms_micro(18, 30, 2, 250000)), [INFO] [stderr] | ^^^^^^ help: consider: `250_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/feed/mod.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | mod feed; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/feed/feed.rs:132:26 [INFO] [stderr] | [INFO] [stderr] 132 | Nested { name: _, element } => [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Nested { element, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/feed/text.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | / macro_rules! assert_sanitized { [INFO] [stderr] 167 | | ($text:expr, $expected:expr) => ( [INFO] [stderr] 168 | | assert_eq!($text.sanitized_html(None).to_string(), $expected); [INFO] [stderr] 169 | | ); [INFO] [stderr] ... | [INFO] [stderr] 172 | | ) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/feed/mod.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | const ATOM_XMLNS: &'static str = "http://www.w3.org/2005/Atom"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/feed/mod.rs:51:20 [INFO] [stderr] | [INFO] [stderr] 51 | const MARK_XMLNS: &'static str = "http://earthreader.org/mark/"; [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: variable does not need to be mutable [INFO] [stderr] --> src/stage.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | let mut slot = match dig(&mut self.dictionary, key) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/stage.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | let mut next = match map.entry(head) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/codecs.rs:90:66 [INFO] [stderr] | [INFO] [stderr] 90 | let offset = if caps.name("tz_offset").map_or(false, |x| x.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/codecs.rs:156:31 [INFO] [stderr] | [INFO] [stderr] 156 | match write!(w, "{}", match *value { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 157 | | true => &self.true_texts[0], [INFO] [stderr] 158 | | false => &self.false_texts[0] [INFO] [stderr] 159 | | }) { [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if *value { &self.true_texts[0] } else { &self.false_texts[0] }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/feed/generator.rs:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | if let Some(_) = self.uri { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 44 | | try!(write!(f, "")); [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________- help: try this: `if self.uri.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/feed/mark.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match cmp { [INFO] [stderr] 39 | | Less => { self.clone_from(&other); } [INFO] [stderr] 40 | | _ => { } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_________^ help: try this: `if let Less = cmp { self.clone_from(&other); }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/feed/metadata.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | / match try!(FromSchemaReader::build_from(child)) { [INFO] [stderr] 107 | | Some(p) => self.authors.push(p), [INFO] [stderr] 108 | | None => { } [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 106 | if let Some(p) = match $ expr { [INFO] [stderr] 107 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 108 | :: Err ( err ) => { [INFO] [stderr] 109 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 110 | $ crate :: convert :: From :: from ( err ) ) } } { self.authors.push(p) } [INFO] [stderr] | [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/feed/metadata.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | / match try!(FromSchemaReader::build_from(child)) { [INFO] [stderr] 113 | | Some(p) => self.contributors.push(p), [INFO] [stderr] 114 | | None => { } [INFO] [stderr] 115 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 112 | if let Some(p) = match $ expr { [INFO] [stderr] 113 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 114 | :: Err ( err ) => { [INFO] [stderr] 115 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 116 | $ crate :: convert :: From :: from ( err ) ) } } { self.contributors.push(p) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/feed/person.rs:53:48 [INFO] [stderr] | [INFO] [stderr] 53 | if let Some(ref r) = self.uri.as_ref().or(self.email.as_ref()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| self.email.as_ref())` [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: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/mimetype.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn from_str(mimetype: &str) -> Option { [INFO] [stderr] 26 | | let captures = mimetype_pattern().captures(mimetype); [INFO] [stderr] 27 | | if let Some(captures) = captures { [INFO] [stderr] 28 | | Some(match (captures.name("type"), captures.name("subtype")) { [INFO] [stderr] ... | [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/parser/atom.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | &name.local_name == local_name && [INFO] [stderr] | ----------------^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `name.local_name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [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/parser/atom.rs:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | / match try!(event) { [INFO] [stderr] 249 | | Nested { name, element: elem } => { [INFO] [stderr] 250 | | let ns = &session.element_ns; [INFO] [stderr] 251 | | if name_matches(&name, Some(ns), "name") { [INFO] [stderr] ... | [INFO] [stderr] 259 | | _ => { } [INFO] [stderr] 260 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 248 | if let Nested { name, element: elem } = match $ expr { [INFO] [stderr] 249 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 250 | :: Err ( err ) => { [INFO] [stderr] 251 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 252 | $ crate :: convert :: From :: from ( err ) ) } } { [INFO] [stderr] 253 | let ns = &session.element_ns; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser/base.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | / loop { [INFO] [stderr] 91 | | let c = if let Some(c) = self.children.next() { [INFO] [stderr] 92 | | c [INFO] [stderr] 93 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.children.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/parser/base.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | / pub fn next(&mut self) -> Option>> { [INFO] [stderr] 150 | | if self.finished { [INFO] [stderr] 151 | | None [INFO] [stderr] 152 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 197 | | } [INFO] [stderr] 198 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [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/repository/mod.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | fn as_bytes<'a>(&'a self) -> &'a [u8]; [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/sanitizer/mod.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / pub fn escape<'a>(text: &'a str, quote: bool) -> Escape<'a> { [INFO] [stderr] 23 | | Escape(text, if quote { QUOTE } else { ESCAPE }) [INFO] [stderr] 24 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/stage.rs:220:38 [INFO] [stderr] | [INFO] [stderr] 220 | Entry::Occupied(slot) => match slot.into_mut() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 221 | | &mut NestedItem::Map(ref mut m) => m, [INFO] [stderr] 222 | | _ => { return None; } [INFO] [stderr] 223 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | Entry::Occupied(slot) => match *slot.into_mut() { [INFO] [stderr] 221 | NestedItem::Map(ref mut m) => m, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/stage.rs:226:21 [INFO] [stderr] | [INFO] [stderr] 226 | / match slot.insert(NestedItem::Item(None)) { [INFO] [stderr] 227 | | &mut NestedItem::Item(ref mut v) => { [INFO] [stderr] 228 | | return Some(v); [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | _ => unreachable!() [INFO] [stderr] 231 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 226 | match *slot.insert(NestedItem::Item(None)) { [INFO] [stderr] 227 | NestedItem::Item(ref mut v) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/stage.rs:233:21 [INFO] [stderr] | [INFO] [stderr] 233 | / match slot.insert(NestedItem::Map(HashMap::new())) { [INFO] [stderr] 234 | | &mut NestedItem::Map(ref mut m) => m, [INFO] [stderr] 235 | | _ => unreachable!() [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 233 | match *slot.insert(NestedItem::Map(HashMap::new())) { [INFO] [stderr] 234 | NestedItem::Map(ref mut m) => m, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused variable: `u1` [INFO] [stderr] --> src/repository/fs.rs:187:13 [INFO] [stderr] | [INFO] [stderr] 187 | let u1: Url = ToRepository::from_repo(&fs); [INFO] [stderr] | ^^ help: consider using `_u1` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/stage.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | let mut slot = match dig(&mut self.dictionary, key) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/stage.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | let mut next = match map.entry(head) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/codecs.rs:90:66 [INFO] [stderr] | [INFO] [stderr] 90 | let offset = if caps.name("tz_offset").map_or(false, |x| x.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/codecs.rs:156:31 [INFO] [stderr] | [INFO] [stderr] 156 | match write!(w, "{}", match *value { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 157 | | true => &self.true_texts[0], [INFO] [stderr] 158 | | false => &self.false_texts[0] [INFO] [stderr] 159 | | }) { [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if *value { &self.true_texts[0] } else { &self.false_texts[0] }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `60` [INFO] [stderr] --> src/codecs.rs:193:32 [INFO] [stderr] | [INFO] [stderr] 193 | FixedOffset::east(1 * 60 * 60).ymd(2003, 12, 13).and_hms(18, 30, 2)), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `60` [INFO] [stderr] --> src/codecs.rs:195:32 [INFO] [stderr] | [INFO] [stderr] 195 | FixedOffset::east(1 * 60 * 60).ymd(2003, 12, 13).and_hms_micro(18, 30, 2, 250000)), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/codecs.rs:226:43 [INFO] [stderr] | [INFO] [stderr] 226 | assert_eq!(to_string(RFC3339, (*dt).clone()), rfc3339_str); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `(*dt)` [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: the operation is ineffective. Consider reducing it to `60` [INFO] [stderr] --> src/codecs.rs:248:36 [INFO] [stderr] | [INFO] [stderr] 248 | let dt = FixedOffset::east(1 * 60 * 60).ymd(2003, 12, 13).and_hms(18, 30, 2); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/feed/feed.rs:93:19 [INFO] [stderr] | [INFO] [stderr] 93 | read_feed(r##" [INFO] [stderr] | ___________________^ [INFO] [stderr] 94 | | [INFO] [stderr] 96 | | Example Feed [INFO] [stderr] ... | [INFO] [stderr] 122 | | "## // " [INFO] [stderr] 123 | | .as_bytes()) [INFO] [stderr] | |___________________^ [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] help: consider using a byte string literal instead [INFO] [stderr] | [INFO] [stderr] 93 | read_feed(br##" [INFO] [stderr] 94 | [INFO] [stderr] 96 | Example Feed [INFO] [stderr] 97 | [INFO] [stderr] 98 | 2003-12-13T18:30:02Z [INFO] [stderr] ... [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/feed/feed.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | / match event.unwrap() { [INFO] [stderr] 132 | | Nested { name: _, element } => [INFO] [stderr] 133 | | FromSchemaReader::read_from(&mut feed, element).unwrap(), [INFO] [stderr] 134 | | _ => { } [INFO] [stderr] 135 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Nested { name: _, element } = event.unwrap() { FromSchemaReader::read_from(&mut feed, element).unwrap() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/feed/feed.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / fn test_feed_read() { [INFO] [stderr] 142 | | let feed = fx_feed(); [INFO] [stderr] 143 | | assert_eq!(feed.title, Text::plain("Example Feed")); [INFO] [stderr] 144 | | assert_eq!(feed.links.len(), 1); [INFO] [stderr] ... | [INFO] [stderr] 178 | | assert_eq!(entries[1].summary, Some(Text::plain("Don't Panic!"))); [INFO] [stderr] 179 | | } [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/feed/feed.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | let ref link = feed.links[0]; [INFO] [stderr] | ----^^^^^^^^----------------- help: try: `let link = &feed.links[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/feed/feed.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | let ref authors = feed.authors; [INFO] [stderr] | ----^^^^^^^^^^^---------------- help: try: `let authors = &feed.authors;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/feed/feed.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | let ref categories = feed.categories; [INFO] [stderr] | ----^^^^^^^^^^^^^^------------------- help: try: `let categories = &feed.categories;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/feed/feed.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | let ref entries = feed.entries; [INFO] [stderr] | ----^^^^^^^^^^^---------------- help: try: `let entries = &feed.entries;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/feed/generator.rs:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | if let Some(_) = self.uri { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 44 | | try!(write!(f, "")); [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________- help: try this: `if self.uri.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/feed/mark.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match cmp { [INFO] [stderr] 39 | | Less => { self.clone_from(&other); } [INFO] [stderr] 40 | | _ => { } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_________^ help: try this: `if let Less = cmp { self.clone_from(&other); }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/feed/metadata.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | / match try!(FromSchemaReader::build_from(child)) { [INFO] [stderr] 107 | | Some(p) => self.authors.push(p), [INFO] [stderr] 108 | | None => { } [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 106 | if let Some(p) = match $ expr { [INFO] [stderr] 107 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 108 | :: Err ( err ) => { [INFO] [stderr] 109 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 110 | $ crate :: convert :: From :: from ( err ) ) } } { self.authors.push(p) } [INFO] [stderr] | [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/feed/metadata.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | / match try!(FromSchemaReader::build_from(child)) { [INFO] [stderr] 113 | | Some(p) => self.contributors.push(p), [INFO] [stderr] 114 | | None => { } [INFO] [stderr] 115 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 112 | if let Some(p) = match $ expr { [INFO] [stderr] 113 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 114 | :: Err ( err ) => { [INFO] [stderr] 115 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 116 | $ crate :: convert :: From :: from ( err ) ) } } { self.contributors.push(p) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/feed/person.rs:53:48 [INFO] [stderr] | [INFO] [stderr] 53 | if let Some(ref r) = self.uri.as_ref().or(self.email.as_ref()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| self.email.as_ref())` [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: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/mimetype.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn from_str(mimetype: &str) -> Option { [INFO] [stderr] 26 | | let captures = mimetype_pattern().captures(mimetype); [INFO] [stderr] 27 | | if let Some(captures) = captures { [INFO] [stderr] 28 | | Some(match (captures.name("type"), captures.name("subtype")) { [INFO] [stderr] ... | [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/parser/atom.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | &name.local_name == local_name && [INFO] [stderr] | ----------------^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `name.local_name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [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/parser/atom.rs:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | / match try!(event) { [INFO] [stderr] 249 | | Nested { name, element: elem } => { [INFO] [stderr] 250 | | let ns = &session.element_ns; [INFO] [stderr] 251 | | if name_matches(&name, Some(ns), "name") { [INFO] [stderr] ... | [INFO] [stderr] 259 | | _ => { } [INFO] [stderr] 260 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 248 | if let Nested { name, element: elem } = match $ expr { [INFO] [stderr] 249 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 250 | :: Err ( err ) => { [INFO] [stderr] 251 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 252 | $ crate :: convert :: From :: from ( err ) ) } } { [INFO] [stderr] 253 | let ns = &session.element_ns; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser/base.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | / loop { [INFO] [stderr] 91 | | let c = if let Some(c) = self.children.next() { [INFO] [stderr] 92 | | c [INFO] [stderr] 93 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.children.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/parser/base.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | / pub fn next(&mut self) -> Option>> { [INFO] [stderr] 150 | | if self.finished { [INFO] [stderr] 151 | | None [INFO] [stderr] 152 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 197 | | } [INFO] [stderr] 198 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [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/repository/mod.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | fn as_bytes<'a>(&'a self) -> &'a [u8]; [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: length comparison to zero [INFO] [stderr] --> src/repository/mod.rs:240:21 [INFO] [stderr] | [INFO] [stderr] 240 | assert!(buf.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/repository/mod.rs:244:30 [INFO] [stderr] | [INFO] [stderr] 244 | writer.write_all("Hello".as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"Hello"` [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: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/repository/mod.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | / pub fn test_repository(mut repository: R) { [INFO] [stderr] 252 | | let empty: &[&str] = &[]; [INFO] [stderr] 253 | | expect_invalid_key!(repository.get_reader, &[]); [INFO] [stderr] 254 | | expect_invalid_key!(repository.get_writer, &[]); [INFO] [stderr] ... | [INFO] [stderr] 279 | | expect_invalid_key!(repository.list, &["key"]); [INFO] [stderr] 280 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/sanitizer/mod.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / pub fn escape<'a>(text: &'a str, quote: bool) -> Escape<'a> { [INFO] [stderr] 23 | | Escape(text, if quote { QUOTE } else { ESCAPE }) [INFO] [stderr] 24 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/stage.rs:220:38 [INFO] [stderr] | [INFO] [stderr] 220 | Entry::Occupied(slot) => match slot.into_mut() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 221 | | &mut NestedItem::Map(ref mut m) => m, [INFO] [stderr] 222 | | _ => { return None; } [INFO] [stderr] 223 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | Entry::Occupied(slot) => match *slot.into_mut() { [INFO] [stderr] 221 | NestedItem::Map(ref mut m) => m, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/stage.rs:226:21 [INFO] [stderr] | [INFO] [stderr] 226 | / match slot.insert(NestedItem::Item(None)) { [INFO] [stderr] 227 | | &mut NestedItem::Item(ref mut v) => { [INFO] [stderr] 228 | | return Some(v); [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | _ => unreachable!() [INFO] [stderr] 231 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 226 | match *slot.insert(NestedItem::Item(None)) { [INFO] [stderr] 227 | NestedItem::Item(ref mut v) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/stage.rs:233:21 [INFO] [stderr] | [INFO] [stderr] 233 | / match slot.insert(NestedItem::Map(HashMap::new())) { [INFO] [stderr] 234 | | &mut NestedItem::Map(ref mut m) => m, [INFO] [stderr] 235 | | _ => unreachable!() [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 233 | match *slot.insert(NestedItem::Map(HashMap::new())) { [INFO] [stderr] 234 | NestedItem::Map(ref mut m) => m, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.53s [INFO] running `"docker" "inspect" "e6bf66acc89bc25f2202ca2d8d2799d734482db387015bcad87577cf664a2014"` [INFO] running `"docker" "rm" "-f" "e6bf66acc89bc25f2202ca2d8d2799d734482db387015bcad87577cf664a2014"` [INFO] [stdout] e6bf66acc89bc25f2202ca2d8d2799d734482db387015bcad87577cf664a2014