[INFO] crate webthing 0.10.0 is already in cache [INFO] extracting crate webthing 0.10.0 into work/ex/clippy-test-run/sources/stable/reg/webthing/0.10.0 [INFO] extracting crate webthing 0.10.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/webthing/0.10.0 [INFO] validating manifest of webthing-0.10.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 webthing-0.10.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 webthing-0.10.0 [INFO] finished frobbing webthing-0.10.0 [INFO] frobbed toml for webthing-0.10.0 written to work/ex/clippy-test-run/sources/stable/reg/webthing/0.10.0/Cargo.toml [INFO] started frobbing webthing-0.10.0 [INFO] finished frobbing webthing-0.10.0 [INFO] frobbed toml for webthing-0.10.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/webthing/0.10.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 webthing-0.10.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/webthing/0.10.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] 849679bb93bea246703ffade06f6ee5338f490980b9d0a2cddf17650b669f54f [INFO] running `"docker" "start" "-a" "849679bb93bea246703ffade06f6ee5338f490980b9d0a2cddf17650b669f54f"` [INFO] [stderr] Checking arc-swap v0.3.7 [INFO] [stderr] Checking c_linked_list v1.1.1 [INFO] [stderr] Compiling v_escape v0.3.2 [INFO] [stderr] Compiling v_htmlescape v0.3.2 [INFO] [stderr] Compiling actix-web v0.7.18 [INFO] [stderr] Compiling brotli-sys v0.3.2 [INFO] [stderr] Checking socket2 v0.3.8 [INFO] [stderr] Checking hostname v0.1.5 [INFO] [stderr] Checking multimap v0.4.0 [INFO] [stderr] Checking resolv-conf v0.6.2 [INFO] [stderr] Checking flate2 v1.0.6 [INFO] [stderr] Checking jsonway v2.0.0 [INFO] [stderr] Compiling v_escape_derive v0.2.1 [INFO] [stderr] Checking url v1.7.2 [INFO] [stderr] Checking get_if_addrs v0.5.3 [INFO] [stderr] Checking tokio-openssl v0.2.1 [INFO] [stderr] Checking signal-hook v0.1.7 [INFO] [stderr] Checking uuid v0.7.2 [INFO] [stderr] Compiling phf_generator v0.7.24 [INFO] [stderr] Checking tokio-reactor v0.1.8 [INFO] [stderr] Checking tokio-threadpool v0.1.11 [INFO] [stderr] Checking serde_urlencoded v0.5.4 [INFO] [stderr] Checking publicsuffix v1.5.2 [INFO] [stderr] Checking cookie v0.11.0 [INFO] [stderr] Compiling phf_codegen v0.7.24 [INFO] [stderr] Compiling mime_guess v2.0.0-alpha.6 [INFO] [stderr] Compiling valico v2.4.1 [INFO] [stderr] Checking tokio-tcp v0.1.3 [INFO] [stderr] Checking tokio-udp v0.1.3 [INFO] [stderr] Checking tokio-uds v0.2.5 [INFO] [stderr] Checking tokio-signal v0.2.7 [INFO] [stderr] Checking tokio-fs v0.1.5 [INFO] [stderr] Checking trust-dns-proto v0.6.3 [INFO] [stderr] Checking trust-dns-proto v0.5.0 [INFO] [stderr] Checking brotli2 v0.3.2 [INFO] [stderr] Checking tokio v0.1.15 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking trust-dns-resolver v0.10.3 [INFO] [stderr] Checking libmdns v0.2.3 [INFO] [stderr] Checking actix v0.7.9 [INFO] [stderr] Checking actix-net v0.2.6 [INFO] [stderr] Checking webthing v0.10.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/action.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/action.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | 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/action.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/action.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | href: href, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `href` [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/action.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | thing: thing, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `thing` [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/event.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | 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/event.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | 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/property.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | 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/property.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | value_forwarder: value_forwarder, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `value_forwarder` [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/property.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | href: href, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `href` [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/server.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | thing_id: thing_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `thing_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/server.rs:923:13 [INFO] [stderr] | [INFO] [stderr] 923 | things: things, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `things` [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/server.rs:924:13 [INFO] [stderr] | [INFO] [stderr] 924 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/server.rs:925:13 [INFO] [stderr] | [INFO] [stderr] 925 | hostname: hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostname` [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/server.rs:926:13 [INFO] [stderr] | [INFO] [stderr] 926 | ssl_options: ssl_options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ssl_options` [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/server.rs:927:13 [INFO] [stderr] | [INFO] [stderr] 927 | generator_arc: generator_arc, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generator_arc` [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/thing.rs:306:13 [INFO] [stderr] | [INFO] [stderr] 306 | 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/thing.rs:913:27 [INFO] [stderr] | [INFO] [stderr] 913 | AvailableAction { metadata: metadata } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `metadata` [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/thing.rs:960:13 [INFO] [stderr] | [INFO] [stderr] 960 | metadata: metadata, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `metadata` [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/action.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/action.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | 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/action.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/action.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | href: href, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `href` [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/action.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | thing: thing, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `thing` [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/event.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | 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/event.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | 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/property.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | 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/property.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | value_forwarder: value_forwarder, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `value_forwarder` [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/property.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | href: href, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `href` [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/server.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | thing_id: thing_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `thing_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/server.rs:923:13 [INFO] [stderr] | [INFO] [stderr] 923 | things: things, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `things` [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/server.rs:924:13 [INFO] [stderr] | [INFO] [stderr] 924 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/server.rs:925:13 [INFO] [stderr] | [INFO] [stderr] 925 | hostname: hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostname` [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/server.rs:926:13 [INFO] [stderr] | [INFO] [stderr] 926 | ssl_options: ssl_options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ssl_options` [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/server.rs:927:13 [INFO] [stderr] | [INFO] [stderr] 927 | generator_arc: generator_arc, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generator_arc` [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/thing.rs:306:13 [INFO] [stderr] | [INFO] [stderr] 306 | 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/thing.rs:913:27 [INFO] [stderr] | [INFO] [stderr] 913 | AvailableAction { metadata: metadata } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `metadata` [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/thing.rs:960:13 [INFO] [stderr] | [INFO] [stderr] 960 | metadata: metadata, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `metadata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server.rs:325:25 [INFO] [stderr] | [INFO] [stderr] 325 | / return ctx.text(format!( [INFO] [stderr] 326 | | r#" [INFO] [stderr] 327 | | {{ [INFO] [stderr] 328 | | "messageType": "error", [INFO] [stderr] ... | [INFO] [stderr] 334 | | unknown [INFO] [stderr] 335 | | )); [INFO] [stderr] | |___________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 325 | ctx.text(format!( [INFO] [stderr] 326 | r#" [INFO] [stderr] 327 | {{ [INFO] [stderr] 328 | "messageType": "error", [INFO] [stderr] 329 | "data": {{ [INFO] [stderr] 330 | "status": "400 Bad Request", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/server.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | / if thing_id.is_none() { [INFO] [stderr] 65 | | return None; [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________________^ help: replace_it_with: `thing_id?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/server.rs:112:14 [INFO] [stderr] | [INFO] [stderr] 112 | .ok_or(ErrorForbidden(ParseError::Header))? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| ErrorForbidden(ParseError::Header))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/thing.rs:99:66 [INFO] [stderr] | [INFO] [stderr] 99 | fn find_property(&mut self, property_name: String) -> Option<&mut Box>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&mut Property` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/thing.rs:279:14 [INFO] [stderr] | [INFO] [stderr] 279 | actions: HashMap>>>>, [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: length comparison to zero [INFO] [stderr] --> src/thing.rs:407:12 [INFO] [stderr] | [INFO] [stderr] 407 | if self.description.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.description.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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/thing.rs:595:18 [INFO] [stderr] | [INFO] [stderr] 595 | Some(self.properties.get(&property_name).unwrap().get_value()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.properties[&property_name]` [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/thing.rs:685:31 [INFO] [stderr] | [INFO] [stderr] 685 | let action_type = self.available_actions.get(&action_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.available_actions[&action_name]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/thing.rs:838:9 [INFO] [stderr] | [INFO] [stderr] 838 | / match self.get_action(name, id) { [INFO] [stderr] 839 | | Some(action) => { [INFO] [stderr] 840 | | let mut a = action.write().unwrap(); [INFO] [stderr] 841 | | a.start(); [INFO] [stderr] ... | [INFO] [stderr] 845 | | None => (), [INFO] [stderr] 846 | | } [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] 838 | if let Some(action) = self.get_action(name, id) { [INFO] [stderr] 839 | let mut a = action.write().unwrap(); [INFO] [stderr] 840 | a.start(); [INFO] [stderr] 841 | self.action_notify(a.as_action_description()); [INFO] [stderr] 842 | a.perform_action(); [INFO] [stderr] 843 | } [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/thing.rs:854:9 [INFO] [stderr] | [INFO] [stderr] 854 | / match self.get_action(name, id) { [INFO] [stderr] 855 | | Some(action) => { [INFO] [stderr] 856 | | let mut a = action.write().unwrap(); [INFO] [stderr] 857 | | a.cancel(); [INFO] [stderr] 858 | | } [INFO] [stderr] 859 | | None => (), [INFO] [stderr] 860 | | } [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] 854 | if let Some(action) = self.get_action(name, id) { [INFO] [stderr] 855 | let mut a = action.write().unwrap(); [INFO] [stderr] 856 | a.cancel(); [INFO] [stderr] 857 | } [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/thing.rs:868:9 [INFO] [stderr] | [INFO] [stderr] 868 | / match self.get_action(name, id) { [INFO] [stderr] 869 | | Some(action) => { [INFO] [stderr] 870 | | let mut a = action.write().unwrap(); [INFO] [stderr] 871 | | a.finish(); [INFO] [stderr] ... | [INFO] [stderr] 874 | | None => (), [INFO] [stderr] 875 | | } [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] 868 | if let Some(action) = self.get_action(name, id) { [INFO] [stderr] 869 | let mut a = action.write().unwrap(); [INFO] [stderr] 870 | a.finish(); [INFO] [stderr] 871 | self.action_notify(a.as_action_description()); [INFO] [stderr] 872 | } [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/thing.rs:883:9 [INFO] [stderr] | [INFO] [stderr] 883 | / match self.subscribers.get_mut(&ws_id) { [INFO] [stderr] 884 | | Some(v) => { [INFO] [stderr] 885 | | drains.push(v.drain(..)); [INFO] [stderr] 886 | | } [INFO] [stderr] 887 | | None => (), [INFO] [stderr] 888 | | } [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] 883 | if let Some(v) = self.subscribers.get_mut(&ws_id) { [INFO] [stderr] 884 | drains.push(v.drain(..)); [INFO] [stderr] 885 | } [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/thing.rs:891:13 [INFO] [stderr] | [INFO] [stderr] 891 | / match evt.get_subscribers().get_mut(&ws_id) { [INFO] [stderr] 892 | | Some(v) => { [INFO] [stderr] 893 | | drains.push(v.drain(..)); [INFO] [stderr] 894 | | } [INFO] [stderr] 895 | | None => (), [INFO] [stderr] 896 | | } [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] 891 | if let Some(v) = evt.get_subscribers().get_mut(&ws_id) { [INFO] [stderr] 892 | drains.push(v.drain(..)); [INFO] [stderr] 893 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server.rs:325:25 [INFO] [stderr] | [INFO] [stderr] 325 | / return ctx.text(format!( [INFO] [stderr] 326 | | r#" [INFO] [stderr] 327 | | {{ [INFO] [stderr] 328 | | "messageType": "error", [INFO] [stderr] ... | [INFO] [stderr] 334 | | unknown [INFO] [stderr] 335 | | )); [INFO] [stderr] | |___________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 325 | ctx.text(format!( [INFO] [stderr] 326 | r#" [INFO] [stderr] 327 | {{ [INFO] [stderr] 328 | "messageType": "error", [INFO] [stderr] 329 | "data": {{ [INFO] [stderr] 330 | "status": "400 Bad Request", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/server.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | / if thing_id.is_none() { [INFO] [stderr] 65 | | return None; [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________________^ help: replace_it_with: `thing_id?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/server.rs:112:14 [INFO] [stderr] | [INFO] [stderr] 112 | .ok_or(ErrorForbidden(ParseError::Header))? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| ErrorForbidden(ParseError::Header))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/thing.rs:99:66 [INFO] [stderr] | [INFO] [stderr] 99 | fn find_property(&mut self, property_name: String) -> Option<&mut Box>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&mut Property` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/thing.rs:279:14 [INFO] [stderr] | [INFO] [stderr] 279 | actions: HashMap>>>>, [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: length comparison to zero [INFO] [stderr] --> src/thing.rs:407:12 [INFO] [stderr] | [INFO] [stderr] 407 | if self.description.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.description.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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/thing.rs:595:18 [INFO] [stderr] | [INFO] [stderr] 595 | Some(self.properties.get(&property_name).unwrap().get_value()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.properties[&property_name]` [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/thing.rs:685:31 [INFO] [stderr] | [INFO] [stderr] 685 | let action_type = self.available_actions.get(&action_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.available_actions[&action_name]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/thing.rs:838:9 [INFO] [stderr] | [INFO] [stderr] 838 | / match self.get_action(name, id) { [INFO] [stderr] 839 | | Some(action) => { [INFO] [stderr] 840 | | let mut a = action.write().unwrap(); [INFO] [stderr] 841 | | a.start(); [INFO] [stderr] ... | [INFO] [stderr] 845 | | None => (), [INFO] [stderr] 846 | | } [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] 838 | if let Some(action) = self.get_action(name, id) { [INFO] [stderr] 839 | let mut a = action.write().unwrap(); [INFO] [stderr] 840 | a.start(); [INFO] [stderr] 841 | self.action_notify(a.as_action_description()); [INFO] [stderr] 842 | a.perform_action(); [INFO] [stderr] 843 | } [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/thing.rs:854:9 [INFO] [stderr] | [INFO] [stderr] 854 | / match self.get_action(name, id) { [INFO] [stderr] 855 | | Some(action) => { [INFO] [stderr] 856 | | let mut a = action.write().unwrap(); [INFO] [stderr] 857 | | a.cancel(); [INFO] [stderr] 858 | | } [INFO] [stderr] 859 | | None => (), [INFO] [stderr] 860 | | } [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] 854 | if let Some(action) = self.get_action(name, id) { [INFO] [stderr] 855 | let mut a = action.write().unwrap(); [INFO] [stderr] 856 | a.cancel(); [INFO] [stderr] 857 | } [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/thing.rs:868:9 [INFO] [stderr] | [INFO] [stderr] 868 | / match self.get_action(name, id) { [INFO] [stderr] 869 | | Some(action) => { [INFO] [stderr] 870 | | let mut a = action.write().unwrap(); [INFO] [stderr] 871 | | a.finish(); [INFO] [stderr] ... | [INFO] [stderr] 874 | | None => (), [INFO] [stderr] 875 | | } [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] 868 | if let Some(action) = self.get_action(name, id) { [INFO] [stderr] 869 | let mut a = action.write().unwrap(); [INFO] [stderr] 870 | a.finish(); [INFO] [stderr] 871 | self.action_notify(a.as_action_description()); [INFO] [stderr] 872 | } [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/thing.rs:883:9 [INFO] [stderr] | [INFO] [stderr] 883 | / match self.subscribers.get_mut(&ws_id) { [INFO] [stderr] 884 | | Some(v) => { [INFO] [stderr] 885 | | drains.push(v.drain(..)); [INFO] [stderr] 886 | | } [INFO] [stderr] 887 | | None => (), [INFO] [stderr] 888 | | } [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] 883 | if let Some(v) = self.subscribers.get_mut(&ws_id) { [INFO] [stderr] 884 | drains.push(v.drain(..)); [INFO] [stderr] 885 | } [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/thing.rs:891:13 [INFO] [stderr] | [INFO] [stderr] 891 | / match evt.get_subscribers().get_mut(&ws_id) { [INFO] [stderr] 892 | | Some(v) => { [INFO] [stderr] 893 | | drains.push(v.drain(..)); [INFO] [stderr] 894 | | } [INFO] [stderr] 895 | | None => (), [INFO] [stderr] 896 | | } [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] 891 | if let Some(v) = evt.get_subscribers().get_mut(&ws_id) { [INFO] [stderr] 892 | drains.push(v.drain(..)); [INFO] [stderr] 893 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 44s [INFO] running `"docker" "inspect" "849679bb93bea246703ffade06f6ee5338f490980b9d0a2cddf17650b669f54f"` [INFO] running `"docker" "rm" "-f" "849679bb93bea246703ffade06f6ee5338f490980b9d0a2cddf17650b669f54f"` [INFO] [stdout] 849679bb93bea246703ffade06f6ee5338f490980b9d0a2cddf17650b669f54f