[INFO] crate rustless 0.10.0 is already in cache [INFO] extracting crate rustless 0.10.0 into work/ex/clippy-test-run/sources/stable/reg/rustless/0.10.0 [INFO] extracting crate rustless 0.10.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rustless/0.10.0 [INFO] validating manifest of rustless-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 rustless-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 rustless-0.10.0 [INFO] removed 1 missing tests [INFO] finished frobbing rustless-0.10.0 [INFO] frobbed toml for rustless-0.10.0 written to work/ex/clippy-test-run/sources/stable/reg/rustless/0.10.0/Cargo.toml [INFO] started frobbing rustless-0.10.0 [INFO] removed 1 missing tests [INFO] finished frobbing rustless-0.10.0 [INFO] frobbed toml for rustless-0.10.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rustless/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 rustless-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-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/rustless/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] 933018dac5bfccdc0fc7e8814805d2d362f3cf8f76ddb48df8c58f85a61c4713 [INFO] running `"docker" "start" "-a" "933018dac5bfccdc0fc7e8814805d2d362f3cf8f76ddb48df8c58f85a61c4713"` [INFO] [stderr] warning: An explicit [[test]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other test targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a test target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/tests/tests.rs [INFO] [stderr] * /opt/crater/workdir/tests/params.rs [INFO] [stderr] * /opt/crater/workdir/tests/namespace.rs [INFO] [stderr] * /opt/crater/workdir/tests/redirect.rs [INFO] [stderr] * /opt/crater/workdir/tests/prefix.rs [INFO] [stderr] * /opt/crater/workdir/tests/versioning.rs [INFO] [stderr] * /opt/crater/workdir/tests/serializers.rs [INFO] [stderr] * /opt/crater/workdir/tests/callbacks.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a test target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autotests = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] Checking cookie v0.3.1 [INFO] [stderr] Checking hyper v0.9.18 [INFO] [stderr] Checking queryst v1.0.1 [INFO] [stderr] Checking iron v0.4.0 [INFO] [stderr] Checking persistent v0.2.1 [INFO] [stderr] Checking bodyparser v0.4.1 [INFO] [stderr] Checking rustless v0.10.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/errors.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | reason: reason [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reason` [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/backend/simple_request.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/backend/response.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | status: status, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `status` [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/backend/response.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | status: status, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `status` [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/backend/iron.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | error: error, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `error` [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/framework/api.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | versioning: versioning [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `versioning` [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/framework/endpoint.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/framework/client.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | app: app, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `app` [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/framework/client.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | endpoint: endpoint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `endpoint` [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/framework/client.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | request: request, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `request` [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/framework/client.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | media: media, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `media` [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/framework/media.rs:87:29 [INFO] [stderr] | [INFO] [stderr] 87 | 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/framework/media.rs:88:29 [INFO] [stderr] | [INFO] [stderr] 88 | param: param, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `param` [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/framework/media.rs:89:29 [INFO] [stderr] | [INFO] [stderr] 89 | format: format [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `format` [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/framework/path.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/framework/path.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | regex: regex [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `regex` [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/framework/app.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | root_api: root_api, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `root_api` [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/framework/app.rs:43:25 [INFO] [stderr] | [INFO] [stderr] 43 | error: error, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `error` [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/framework/app.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | error: error, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `error` [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/framework/app.rs:66:25 [INFO] [stderr] | [INFO] [stderr] 66 | response: response [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `response` [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/framework/mod.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | app: app [INFO] [stderr] | ^^^^^^^^ help: replace it with: `app` [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/batteries/swagger.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/batteries/swagger.rs:669:9 [INFO] [stderr] | [INFO] [stderr] 669 | required: required, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `required` [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/errors.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | reason: reason [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reason` [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/backend/simple_request.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/backend/response.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | status: status, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `status` [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/backend/response.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | status: status, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `status` [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/backend/iron.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | error: error, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `error` [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/framework/api.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | versioning: versioning [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `versioning` [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/framework/endpoint.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/framework/client.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | app: app, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `app` [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/framework/client.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | endpoint: endpoint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `endpoint` [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/framework/client.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | request: request, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `request` [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/framework/client.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | media: media, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `media` [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/framework/media.rs:87:29 [INFO] [stderr] | [INFO] [stderr] 87 | 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/framework/media.rs:88:29 [INFO] [stderr] | [INFO] [stderr] 88 | param: param, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `param` [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/framework/media.rs:89:29 [INFO] [stderr] | [INFO] [stderr] 89 | format: format [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `format` [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/framework/path.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/framework/path.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | regex: regex [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `regex` [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/framework/app.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | root_api: root_api, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `root_api` [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/framework/app.rs:43:25 [INFO] [stderr] | [INFO] [stderr] 43 | error: error, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `error` [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/framework/app.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | error: error, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `error` [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/framework/app.rs:66:25 [INFO] [stderr] | [INFO] [stderr] 66 | response: response [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `response` [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/framework/mod.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | app: app [INFO] [stderr] | ^^^^^^^^ help: replace it with: `app` [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/batteries/swagger.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/batteries/swagger.rs:669:9 [INFO] [stderr] | [INFO] [stderr] 669 | required: required, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `required` [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/errors.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / return Body { [INFO] [stderr] 75 | | reason: reason [INFO] [stderr] 76 | | } [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] 74 | Body { [INFO] [stderr] 75 | reason: reason [INFO] [stderr] 76 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | return &self.url; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.url` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return &self.remote_addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.remote_addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | return &self.headers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.headers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | return &self.method; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return &self.body; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return &mut self.body; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | return &mut self.headers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.headers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/framework/api.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return api; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `api` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/framework/namespace.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | return namespace; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `namespace` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/framework/path.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return MATCHER.replace_all(path, "(?P<$1>[^/?&]+)"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `MATCHER.replace_all(path, "(?P<$1>[^/?&]+)")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/batteries/swagger.rs:642:5 [INFO] [stderr] | [INFO] [stderr] 642 | return framework::path::MATCHER.replace_all(&original_path, "{$1}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `framework::path::MATCHER.replace_all(&original_path, "{$1}")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/batteries/swagger.rs:677:5 [INFO] [stderr] | [INFO] [stderr] 677 | swagger_param [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/batteries/swagger.rs:665:25 [INFO] [stderr] | [INFO] [stderr] 665 | let swagger_param = Param { [INFO] [stderr] | _________________________^ [INFO] [stderr] 666 | | name: param.name.clone(), [INFO] [stderr] 667 | | place: Place::Query, [INFO] [stderr] 668 | | description: param.description.clone(), [INFO] [stderr] ... | [INFO] [stderr] 674 | | } [INFO] [stderr] 675 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/batteries/swagger.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/batteries/swagger.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/backend/simple_request.rs:55:18 [INFO] [stderr] | [INFO] [stderr] 55 | .map(|body| Some(body)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | fn get_handlers<'a>(&'a self) -> &'a framework::ApiHandlers; [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/framework/nesting.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | fn get_handlers_mut<'a>(&'a mut self) -> &'a mut framework::ApiHandlers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | fn get_before<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | fn get_before_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | fn get_before_validation<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | fn get_before_validation_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | fn get_after_validation<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | fn get_after_validation_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | fn get_after<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | fn get_after_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [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: transmute from a pointer type (`*const ()`) to a reference type (`&E`) [INFO] [stderr] --> src/framework/api_handler.rs:21:27 [INFO] [stderr] | [INFO] [stderr] 21 | unsafe { Some(mem::transmute(traitobject::data(self))) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(traitobject::data(self) as *const E)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const ()`) to a reference type (`&mut T`) [INFO] [stderr] --> src/framework/api_handler.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | mem::transmute(traitobject::data(self)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(traitobject::data(self) as *mut T)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `framework::api::Api` [INFO] [stderr] --> src/framework/api.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / pub fn new() -> Api { [INFO] [stderr] 44 | | Api { [INFO] [stderr] 45 | | version: None, [INFO] [stderr] 46 | | prefix: None, [INFO] [stderr] ... | [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | #[derive(Default)] [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/framework/api.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | / match err_formatter(err, media) { [INFO] [stderr] 92 | | Some(resp) => return Some(resp), [INFO] [stderr] 93 | | None => () [INFO] [stderr] 94 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(resp) = err_formatter(err, media) { return Some(resp) }` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | fn get_handlers<'a>(&'a self) -> &'a ::framework::ApiHandlers { &self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | fn get_handlers_mut<'a>(&'a mut self) -> &'a mut ::framework::ApiHandlers { &mut self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | fn get_before<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | fn get_before_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | fn get_before_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | fn get_before_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | fn get_after_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | fn get_after_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | fn get_after<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_after_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/framework/api.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | let ref version = version_struct.version; [INFO] [stderr] | ----^^^^^^^^^^^-------------------------- help: try: `let version = &version_struct.version;` [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/framework/api.rs:139:17 [INFO] [stderr] | [INFO] [stderr] 139 | let ref versioning = version_struct.versioning; [INFO] [stderr] | ----^^^^^^^^^^^^^^----------------------------- help: try: `let versioning = &version_struct.versioning;` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/api.rs:141:13 [INFO] [stderr] | [INFO] [stderr] 141 | / match versioning { [INFO] [stderr] 142 | | &Versioning::Path => { [INFO] [stderr] 143 | | if rest_path.starts_with(&version[..]) { [INFO] [stderr] 144 | | rest_path = path::normalize(&rest_path[(version.len())..]) [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [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] 141 | match *versioning { [INFO] [stderr] 142 | Versioning::Path => { [INFO] [stderr] 143 | if rest_path.starts_with(&version[..]) { [INFO] [stderr] 144 | rest_path = path::normalize(&rest_path[(version.len())..]) [INFO] [stderr] 145 | } else { [INFO] [stderr] 146 | return Err(error_response!(errors::NotMatch)) [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/framework/api.rs:161:33 [INFO] [stderr] | [INFO] [stderr] 161 | / match media::Media::from_vendor(&qual.item) { [INFO] [stderr] 162 | | Some(media) => { [INFO] [stderr] 163 | | if &media.vendor[..] == *vendor && [INFO] [stderr] 164 | | media.version.is_some() && [INFO] [stderr] ... | [INFO] [stderr] 170 | | None => () [INFO] [stderr] 171 | | } [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] 161 | if let Some(media) = media::Media::from_vendor(&qual.item) { [INFO] [stderr] 162 | if &media.vendor[..] == *vendor && [INFO] [stderr] 163 | media.version.is_some() && [INFO] [stderr] 164 | media.version.as_ref().unwrap() == version { [INFO] [stderr] 165 | matched_media = Some(media); [INFO] [stderr] 166 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/framework/api.rs:201:104 [INFO] [stderr] | [INFO] [stderr] 201 | let resp = self.handle_error(&*err_resp.error, &self.extract_media(req).unwrap_or_else(|| media::Media::default())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `media::Media::default` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/endpoint.rs:97:20 [INFO] [stderr] | [INFO] [stderr] 97 | if state.missing.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.missing.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/framework/endpoint.rs:139:14 [INFO] [stderr] | [INFO] [stderr] 139 | cbs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[framework::Callback]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | fn get_handlers<'a>(&'a self) -> &'a ::framework::ApiHandlers { &self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | fn get_handlers_mut<'a>(&'a mut self) -> &'a mut ::framework::ApiHandlers { &mut self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | fn get_before<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | fn get_before_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | fn get_before_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | fn get_before_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | fn get_after_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | fn get_after_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | fn get_after<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_after_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/namespace.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | if state.missing.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.missing.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | / match mime { [INFO] [stderr] 10 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => true, [INFO] [stderr] 11 | | _ => false [INFO] [stderr] 12 | | } [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] 9 | match *mime { [INFO] [stderr] 10 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / match mime { [INFO] [stderr] 17 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::WwwFormUrlEncoded, _) => true, [INFO] [stderr] 18 | | _ => false [INFO] [stderr] 19 | | } [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] 16 | match *mime { [INFO] [stderr] 17 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::WwwFormUrlEncoded, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match mime { [INFO] [stderr] 24 | | &mime::Mime(mime::TopLevel::Multipart, mime::SubLevel::FormData, _) => true, [INFO] [stderr] 25 | | _ => false [INFO] [stderr] 26 | | } [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] 23 | match *mime { [INFO] [stderr] 24 | mime::Mime(mime::TopLevel::Multipart, mime::SubLevel::FormData, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/errors.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / return Body { [INFO] [stderr] 75 | | reason: reason [INFO] [stderr] 76 | | } [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] 74 | Body { [INFO] [stderr] 75 | reason: reason [INFO] [stderr] 76 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | return &self.url; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.url` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return &self.remote_addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.remote_addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | return &self.headers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.headers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | return &self.method; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return &self.body; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return &mut self.body; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/backend/simple_request.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | return &mut self.headers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.headers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/framework/api.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return api; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `api` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match mime { [INFO] [stderr] 39 | | &mime::Mime(mime::TopLevel::Text, mime::SubLevel::Plain, _) => Format::PlainTextFormat, [INFO] [stderr] 40 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => Format::JsonFormat, [INFO] [stderr] 41 | | _ => Format::OtherFormat(mime.clone()) [INFO] [stderr] 42 | | } [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] 38 | match *mime { [INFO] [stderr] 39 | mime::Mime(mime::TopLevel::Text, mime::SubLevel::Plain, _) => Format::PlainTextFormat, [INFO] [stderr] 40 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => Format::JsonFormat, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / match mime { [INFO] [stderr] 70 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::Ext(ref ext), _) => { [INFO] [stderr] 71 | | match MEDIA_REGEX.captures(&ext) { [INFO] [stderr] 72 | | Some(captures) => { [INFO] [stderr] ... | [INFO] [stderr] 95 | | _ => None [INFO] [stderr] 96 | | } [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] 69 | match *mime { [INFO] [stderr] 70 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::Ext(ref ext), _) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/framework/namespace.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | return namespace; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `namespace` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/path.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn normalize<'a>(path: &'a str) -> &'a str { [INFO] [stderr] 18 | | if path.starts_with("/") { [INFO] [stderr] 19 | | &path[1..] [INFO] [stderr] 20 | | } else { [INFO] [stderr] 21 | | path [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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: single-character string constant used as pattern [INFO] [stderr] --> src/framework/path.rs:18:25 [INFO] [stderr] | [INFO] [stderr] 18 | if path.starts_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/framework/path.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | regex_body = regex_body + "$"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `regex_body += "$"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/framework/path.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return MATCHER.replace_all(path, "(?P<$1>[^/?&]+)"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `MATCHER.replace_all(path, "(?P<$1>[^/?&]+)")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/framework/app.rs:98:22 [INFO] [stderr] | [INFO] [stderr] 98 | let maybe_body = try!(req.read_to_end().map_err(|err| error_response_boxed!(err))) [INFO] [stderr] | ______________________^ [INFO] [stderr] 99 | | .unwrap_or(String::new()); [INFO] [stderr] | |_________________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 98 | let maybe_body = match $ expr { [INFO] [stderr] 99 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 100| :: Err ( err ) => { [INFO] [stderr] 101| return $ crate :: result :: Result :: Err ( [INFO] [stderr] 102| $ crate :: convert :: From :: from ( err ) ) } }.unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/app.rs:101:8 [INFO] [stderr] | [INFO] [stderr] 101 | if maybe_body.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!maybe_body.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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/framework/app.rs:124:22 [INFO] [stderr] | [INFO] [stderr] 124 | let maybe_body = try!(req.read_to_end().map_err(|err| error_response_boxed!(err))) [INFO] [stderr] | ______________________^ [INFO] [stderr] 125 | | .unwrap_or(String::new()); [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 124 | let maybe_body = match $ expr { [INFO] [stderr] 125 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 126 | :: Err ( err ) => { [INFO] [stderr] 127 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 128 | $ crate :: convert :: From :: from ( err ) ) } }.unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/app.rs:127:8 [INFO] [stderr] | [INFO] [stderr] 127 | if maybe_body.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!maybe_body.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: useless use of `format!` [INFO] [stderr] --> src/framework/app.rs:142:68 [INFO] [stderr] | [INFO] [stderr] 142 | Err(_) => return Err(error_response!(errors::Body::new(format!("Invalid encoded data")))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Invalid encoded data".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/batteries/cookie.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match maybe_jar { [INFO] [stderr] 55 | | Some(jar) => { [INFO] [stderr] 56 | | res.headers.set(header::SetCookie::from_cookie_jar(jar)); [INFO] [stderr] 57 | | }, [INFO] [stderr] 58 | | None => () [INFO] [stderr] 59 | | } [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] 54 | if let Some(jar) = maybe_jar { [INFO] [stderr] 55 | res.headers.set(header::SetCookie::from_cookie_jar(jar)); [INFO] [stderr] 56 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / match self { [INFO] [stderr] 25 | | &Scheme::Http => "http", [INFO] [stderr] 26 | | &Scheme::Https => "https", [INFO] [stderr] 27 | | &Scheme::Ws => "ws", [INFO] [stderr] 28 | | &Scheme::Wss => "wss" [INFO] [stderr] 29 | | }.to_string() [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] 24 | match *self { [INFO] [stderr] 25 | Scheme::Http => "http", [INFO] [stderr] 26 | Scheme::Https => "https", [INFO] [stderr] 27 | Scheme::Ws => "ws", [INFO] [stderr] 28 | Scheme::Wss => "wss" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/batteries/swagger.rs:642:5 [INFO] [stderr] | [INFO] [stderr] 642 | return framework::path::MATCHER.replace_all(&original_path, "{$1}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `framework::path::MATCHER.replace_all(&original_path, "{$1}")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/batteries/swagger.rs:677:5 [INFO] [stderr] | [INFO] [stderr] 677 | swagger_param [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/batteries/swagger.rs:665:25 [INFO] [stderr] | [INFO] [stderr] 665 | let swagger_param = Param { [INFO] [stderr] | _________________________^ [INFO] [stderr] 666 | | name: param.name.clone(), [INFO] [stderr] 667 | | place: Place::Query, [INFO] [stderr] 668 | | description: param.description.clone(), [INFO] [stderr] ... | [INFO] [stderr] 674 | | } [INFO] [stderr] 675 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | / match self { [INFO] [stderr] 90 | | &Place::Query => "query", [INFO] [stderr] 91 | | &Place::Header => "header", [INFO] [stderr] 92 | | &Place::Path => "path", [INFO] [stderr] 93 | | &Place::FormData => "formData", [INFO] [stderr] 94 | | &Place::Body => "body" [INFO] [stderr] 95 | | }.to_string() [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] 89 | match *self { [INFO] [stderr] 90 | Place::Query => "query", [INFO] [stderr] 91 | Place::Header => "header", [INFO] [stderr] 92 | Place::Path => "path", [INFO] [stderr] 93 | Place::FormData => "formData", [INFO] [stderr] 94 | Place::Body => "body" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | / match self { [INFO] [stderr] 116 | | &ParamType::String => "string", [INFO] [stderr] 117 | | &ParamType::Number => "number", [INFO] [stderr] 118 | | &ParamType::Integer => "integer", [INFO] [stderr] ... | [INFO] [stderr] 121 | | &ParamType::File => "file" [INFO] [stderr] 122 | | }.to_string() [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] 115 | match *self { [INFO] [stderr] 116 | ParamType::String => "string", [INFO] [stderr] 117 | ParamType::Number => "number", [INFO] [stderr] 118 | ParamType::Integer => "integer", [INFO] [stderr] 119 | ParamType::Boolean => "boolean", [INFO] [stderr] 120 | ParamType::Array => "array", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:141:9 [INFO] [stderr] | [INFO] [stderr] 141 | / match self { [INFO] [stderr] 142 | | &ItemType::String => "string", [INFO] [stderr] 143 | | &ItemType::Number => "number", [INFO] [stderr] 144 | | &ItemType::Integer => "integer", [INFO] [stderr] 145 | | &ItemType::Boolean => "boolean", [INFO] [stderr] 146 | | &ItemType::Array => "array" [INFO] [stderr] 147 | | }.to_string() [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] 141 | match *self { [INFO] [stderr] 142 | ItemType::String => "string", [INFO] [stderr] 143 | ItemType::Number => "number", [INFO] [stderr] 144 | ItemType::Integer => "integer", [INFO] [stderr] 145 | ItemType::Boolean => "boolean", [INFO] [stderr] 146 | ItemType::Array => "array" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/batteries/swagger.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | / match &self.ext { [INFO] [stderr] 194 | | &ParamExt::BodyParam(ref schema) => param.set("schema", schema.clone()), [INFO] [stderr] 195 | | &ParamExt::NormalParam{ref type_, ref format, ..} => { [INFO] [stderr] 196 | | param.set("type", type_.to_string()); [INFO] [stderr] ... | [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 193 | match self.ext { [INFO] [stderr] 194 | ParamExt::BodyParam(ref schema) => param.set("schema", schema.clone()), [INFO] [stderr] 195 | ParamExt::NormalParam{ref type_, ref format, ..} => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/batteries/swagger.rs:273:18 [INFO] [stderr] | [INFO] [stderr] 273 | .or(app.root_api.version.clone().map(|v| v.version)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| app.root_api.version.clone().map(|v| v.version))` [INFO] [stderr] | [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 match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/batteries/swagger.rs:298:17 [INFO] [stderr] | [INFO] [stderr] 298 | / match app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 300 | | if base_path.len() > 1 { [INFO] [stderr] 301 | | base_path.push_str("/") [INFO] [stderr] ... | [INFO] [stderr] 305 | | _ => () [INFO] [stderr] 306 | | } [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] 298 | if let &framework::Version{ref version, versioning: framework::Versioning::Path} = app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | if base_path.len() > 1 { [INFO] [stderr] 300 | base_path.push_str("/") [INFO] [stderr] 301 | } [INFO] [stderr] 302 | base_path.push_str(&version); [INFO] [stderr] 303 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:298:17 [INFO] [stderr] | [INFO] [stderr] 298 | / match app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 300 | | if base_path.len() > 1 { [INFO] [stderr] 301 | | base_path.push_str("/") [INFO] [stderr] ... | [INFO] [stderr] 305 | | _ => () [INFO] [stderr] 306 | | } [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] 298 | match *app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/batteries/swagger.rs:431:95 [INFO] [stderr] | [INFO] [stderr] 431 | fn fill_paths<'a>(mut context: WalkContext<'a>, paths: &mut jsonway::ObjectBuilder, handlers: &framework::ApiHandlers) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [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/batteries/swagger.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | / match api.version.as_ref().unwrap() { [INFO] [stderr] 444 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 445 | | path.push_str(&version); [INFO] [stderr] 446 | | path.push_str("/"); [INFO] [stderr] 447 | | }, [INFO] [stderr] 448 | | _ => () [INFO] [stderr] 449 | | } [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] 443 | if let &framework::Version{ref version, versioning: framework::Versioning::Path} = api.version.as_ref().unwrap() { [INFO] [stderr] 444 | path.push_str(&version); [INFO] [stderr] 445 | path.push_str("/"); [INFO] [stderr] 446 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | / match api.version.as_ref().unwrap() { [INFO] [stderr] 444 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 445 | | path.push_str(&version); [INFO] [stderr] 446 | | path.push_str("/"); [INFO] [stderr] 447 | | }, [INFO] [stderr] 448 | | _ => () [INFO] [stderr] 449 | | } [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] 443 | match *api.version.as_ref().unwrap() { [INFO] [stderr] 444 | framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/batteries/swagger.rs:475:16 [INFO] [stderr] | [INFO] [stderr] 475 | if endpoint.path.path.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!endpoint.path.path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/batteries/swagger.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [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/batteries/swagger.rs:610:25 [INFO] [stderr] | [INFO] [stderr] 610 | / match param.place { [INFO] [stderr] 611 | | Place::Query => param.place = Place::FormData, [INFO] [stderr] 612 | | _ => () [INFO] [stderr] 613 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Place::Query = param.place { param.place = Place::FormData }` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/batteries/swagger.rs:641:9 [INFO] [stderr] | [INFO] [stderr] 641 | let ref original_path = path.path; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------- help: try: `let original_path = &path.path;` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/batteries/swagger.rs:647:5 [INFO] [stderr] | [INFO] [stderr] 647 | / match ¶m.coercer { [INFO] [stderr] 648 | | &Some(ref coercer) => { [INFO] [stderr] 649 | | match coercer.get_primitive_type() { [INFO] [stderr] 650 | | json_dsl::PrimitiveType::String => ParamType::String, [INFO] [stderr] ... | [INFO] [stderr] 659 | | &None => ParamType::String [INFO] [stderr] 660 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 647 | match param.coercer { [INFO] [stderr] 648 | Some(ref coercer) => { [INFO] [stderr] 649 | match coercer.get_primitive_type() { [INFO] [stderr] 650 | json_dsl::PrimitiveType::String => ParamType::String, [INFO] [stderr] 651 | json_dsl::PrimitiveType::I64 => ParamType::Integer, [INFO] [stderr] 652 | json_dsl::PrimitiveType::F64 => ParamType::Number, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/batteries/swagger.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/backend/simple_request.rs:55:18 [INFO] [stderr] | [INFO] [stderr] 55 | .map(|body| Some(body)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | fn get_handlers<'a>(&'a self) -> &'a framework::ApiHandlers; [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/framework/nesting.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | fn get_handlers_mut<'a>(&'a mut self) -> &'a mut framework::ApiHandlers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | fn get_before<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | fn get_before_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | fn get_before_validation<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | fn get_before_validation_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | fn get_after_validation<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | fn get_after_validation_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | fn get_after<'a>(&'a self) -> &'a framework::Callbacks; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | fn get_after_mut<'a>(&'a mut self) -> &'a mut framework::Callbacks; [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: transmute from a pointer type (`*const ()`) to a reference type (`&E`) [INFO] [stderr] --> src/framework/api_handler.rs:21:27 [INFO] [stderr] | [INFO] [stderr] 21 | unsafe { Some(mem::transmute(traitobject::data(self))) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(traitobject::data(self) as *const E)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const ()`) to a reference type (`&mut T`) [INFO] [stderr] --> src/framework/api_handler.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | mem::transmute(traitobject::data(self)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(traitobject::data(self) as *mut T)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `framework::api::Api` [INFO] [stderr] --> src/framework/api.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / pub fn new() -> Api { [INFO] [stderr] 44 | | Api { [INFO] [stderr] 45 | | version: None, [INFO] [stderr] 46 | | prefix: None, [INFO] [stderr] ... | [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | #[derive(Default)] [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/framework/api.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | / match err_formatter(err, media) { [INFO] [stderr] 92 | | Some(resp) => return Some(resp), [INFO] [stderr] 93 | | None => () [INFO] [stderr] 94 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(resp) = err_formatter(err, media) { return Some(resp) }` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | fn get_handlers<'a>(&'a self) -> &'a ::framework::ApiHandlers { &self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | fn get_handlers_mut<'a>(&'a mut self) -> &'a mut ::framework::ApiHandlers { &mut self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | fn get_before<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | fn get_before_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | fn get_before_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | fn get_before_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | fn get_after_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | fn get_after_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | fn get_after<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_after_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/api.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | impl_nesting!(Api); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/framework/api.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | let ref version = version_struct.version; [INFO] [stderr] | ----^^^^^^^^^^^-------------------------- help: try: `let version = &version_struct.version;` [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/framework/api.rs:139:17 [INFO] [stderr] | [INFO] [stderr] 139 | let ref versioning = version_struct.versioning; [INFO] [stderr] | ----^^^^^^^^^^^^^^----------------------------- help: try: `let versioning = &version_struct.versioning;` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/api.rs:141:13 [INFO] [stderr] | [INFO] [stderr] 141 | / match versioning { [INFO] [stderr] 142 | | &Versioning::Path => { [INFO] [stderr] 143 | | if rest_path.starts_with(&version[..]) { [INFO] [stderr] 144 | | rest_path = path::normalize(&rest_path[(version.len())..]) [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [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] 141 | match *versioning { [INFO] [stderr] 142 | Versioning::Path => { [INFO] [stderr] 143 | if rest_path.starts_with(&version[..]) { [INFO] [stderr] 144 | rest_path = path::normalize(&rest_path[(version.len())..]) [INFO] [stderr] 145 | } else { [INFO] [stderr] 146 | return Err(error_response!(errors::NotMatch)) [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/framework/api.rs:161:33 [INFO] [stderr] | [INFO] [stderr] 161 | / match media::Media::from_vendor(&qual.item) { [INFO] [stderr] 162 | | Some(media) => { [INFO] [stderr] 163 | | if &media.vendor[..] == *vendor && [INFO] [stderr] 164 | | media.version.is_some() && [INFO] [stderr] ... | [INFO] [stderr] 170 | | None => () [INFO] [stderr] 171 | | } [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] 161 | if let Some(media) = media::Media::from_vendor(&qual.item) { [INFO] [stderr] 162 | if &media.vendor[..] == *vendor && [INFO] [stderr] 163 | media.version.is_some() && [INFO] [stderr] 164 | media.version.as_ref().unwrap() == version { [INFO] [stderr] 165 | matched_media = Some(media); [INFO] [stderr] 166 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/framework/api.rs:201:104 [INFO] [stderr] | [INFO] [stderr] 201 | let resp = self.handle_error(&*err_resp.error, &self.extract_media(req).unwrap_or_else(|| media::Media::default())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `media::Media::default` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/endpoint.rs:97:20 [INFO] [stderr] | [INFO] [stderr] 97 | if state.missing.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.missing.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/framework/endpoint.rs:139:14 [INFO] [stderr] | [INFO] [stderr] 139 | cbs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[framework::Callback]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | fn get_handlers<'a>(&'a self) -> &'a ::framework::ApiHandlers { &self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | fn get_handlers_mut<'a>(&'a mut self) -> &'a mut ::framework::ApiHandlers { &mut self.handlers } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | fn get_before<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | fn get_before_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | fn get_before_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | fn get_before_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.before_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | fn get_after_validation<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | fn get_after_validation_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after_validation } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | fn get_after<'a>(&'a self) -> &'a ::framework::Callbacks { &self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/nesting.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_after_mut<'a>(&'a mut self) -> &'a mut ::framework::Callbacks { &mut self.after } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/framework/namespace.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | impl_nesting!(Namespace); [INFO] [stderr] | ------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/namespace.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | if state.missing.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.missing.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | / match mime { [INFO] [stderr] 10 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => true, [INFO] [stderr] 11 | | _ => false [INFO] [stderr] 12 | | } [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] 9 | match *mime { [INFO] [stderr] 10 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / match mime { [INFO] [stderr] 17 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::WwwFormUrlEncoded, _) => true, [INFO] [stderr] 18 | | _ => false [INFO] [stderr] 19 | | } [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] 16 | match *mime { [INFO] [stderr] 17 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::WwwFormUrlEncoded, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match mime { [INFO] [stderr] 24 | | &mime::Mime(mime::TopLevel::Multipart, mime::SubLevel::FormData, _) => true, [INFO] [stderr] 25 | | _ => false [INFO] [stderr] 26 | | } [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] 23 | match *mime { [INFO] [stderr] 24 | mime::Mime(mime::TopLevel::Multipart, mime::SubLevel::FormData, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match mime { [INFO] [stderr] 39 | | &mime::Mime(mime::TopLevel::Text, mime::SubLevel::Plain, _) => Format::PlainTextFormat, [INFO] [stderr] 40 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => Format::JsonFormat, [INFO] [stderr] 41 | | _ => Format::OtherFormat(mime.clone()) [INFO] [stderr] 42 | | } [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] 38 | match *mime { [INFO] [stderr] 39 | mime::Mime(mime::TopLevel::Text, mime::SubLevel::Plain, _) => Format::PlainTextFormat, [INFO] [stderr] 40 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, _) => Format::JsonFormat, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/framework/media.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / match mime { [INFO] [stderr] 70 | | &mime::Mime(mime::TopLevel::Application, mime::SubLevel::Ext(ref ext), _) => { [INFO] [stderr] 71 | | match MEDIA_REGEX.captures(&ext) { [INFO] [stderr] 72 | | Some(captures) => { [INFO] [stderr] ... | [INFO] [stderr] 95 | | _ => None [INFO] [stderr] 96 | | } [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] 69 | match *mime { [INFO] [stderr] 70 | mime::Mime(mime::TopLevel::Application, mime::SubLevel::Ext(ref ext), _) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/framework/path.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn normalize<'a>(path: &'a str) -> &'a str { [INFO] [stderr] 18 | | if path.starts_with("/") { [INFO] [stderr] 19 | | &path[1..] [INFO] [stderr] 20 | | } else { [INFO] [stderr] 21 | | path [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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: single-character string constant used as pattern [INFO] [stderr] --> src/framework/path.rs:18:25 [INFO] [stderr] | [INFO] [stderr] 18 | if path.starts_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/framework/path.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | regex_body = regex_body + "$"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `regex_body += "$"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/framework/path.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | assert!(match path.is_match("1920/messages/not_match/100500") { [INFO] [stderr] | _____________^ [INFO] [stderr] 96 | | Some(_) => false, [INFO] [stderr] 97 | | None => true [INFO] [stderr] 98 | | }); [INFO] [stderr] | |_____^ help: try this: `path.is_match("1920/messages/not_match/100500").is_none()` [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/framework/app.rs:98:22 [INFO] [stderr] | [INFO] [stderr] 98 | let maybe_body = try!(req.read_to_end().map_err(|err| error_response_boxed!(err))) [INFO] [stderr] | ______________________^ [INFO] [stderr] 99 | | .unwrap_or(String::new()); [INFO] [stderr] | |_________________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 98 | let maybe_body = match $ expr { [INFO] [stderr] 99 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 100| :: Err ( err ) => { [INFO] [stderr] 101| return $ crate :: result :: Result :: Err ( [INFO] [stderr] 102| $ crate :: convert :: From :: from ( err ) ) } }.unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/app.rs:101:8 [INFO] [stderr] | [INFO] [stderr] 101 | if maybe_body.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!maybe_body.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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/framework/app.rs:124:22 [INFO] [stderr] | [INFO] [stderr] 124 | let maybe_body = try!(req.read_to_end().map_err(|err| error_response_boxed!(err))) [INFO] [stderr] | ______________________^ [INFO] [stderr] 125 | | .unwrap_or(String::new()); [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 124 | let maybe_body = match $ expr { [INFO] [stderr] 125 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 126 | :: Err ( err ) => { [INFO] [stderr] 127 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 128 | $ crate :: convert :: From :: from ( err ) ) } }.unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/framework/app.rs:127:8 [INFO] [stderr] | [INFO] [stderr] 127 | if maybe_body.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!maybe_body.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: useless use of `format!` [INFO] [stderr] --> src/framework/app.rs:142:68 [INFO] [stderr] | [INFO] [stderr] 142 | Err(_) => return Err(error_response!(errors::Body::new(format!("Invalid encoded data")))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Invalid encoded data".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/batteries/cookie.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match maybe_jar { [INFO] [stderr] 55 | | Some(jar) => { [INFO] [stderr] 56 | | res.headers.set(header::SetCookie::from_cookie_jar(jar)); [INFO] [stderr] 57 | | }, [INFO] [stderr] 58 | | None => () [INFO] [stderr] 59 | | } [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] 54 | if let Some(jar) = maybe_jar { [INFO] [stderr] 55 | res.headers.set(header::SetCookie::from_cookie_jar(jar)); [INFO] [stderr] 56 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / match self { [INFO] [stderr] 25 | | &Scheme::Http => "http", [INFO] [stderr] 26 | | &Scheme::Https => "https", [INFO] [stderr] 27 | | &Scheme::Ws => "ws", [INFO] [stderr] 28 | | &Scheme::Wss => "wss" [INFO] [stderr] 29 | | }.to_string() [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] 24 | match *self { [INFO] [stderr] 25 | Scheme::Http => "http", [INFO] [stderr] 26 | Scheme::Https => "https", [INFO] [stderr] 27 | Scheme::Ws => "ws", [INFO] [stderr] 28 | Scheme::Wss => "wss" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | / match self { [INFO] [stderr] 90 | | &Place::Query => "query", [INFO] [stderr] 91 | | &Place::Header => "header", [INFO] [stderr] 92 | | &Place::Path => "path", [INFO] [stderr] 93 | | &Place::FormData => "formData", [INFO] [stderr] 94 | | &Place::Body => "body" [INFO] [stderr] 95 | | }.to_string() [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] 89 | match *self { [INFO] [stderr] 90 | Place::Query => "query", [INFO] [stderr] 91 | Place::Header => "header", [INFO] [stderr] 92 | Place::Path => "path", [INFO] [stderr] 93 | Place::FormData => "formData", [INFO] [stderr] 94 | Place::Body => "body" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | / match self { [INFO] [stderr] 116 | | &ParamType::String => "string", [INFO] [stderr] 117 | | &ParamType::Number => "number", [INFO] [stderr] 118 | | &ParamType::Integer => "integer", [INFO] [stderr] ... | [INFO] [stderr] 121 | | &ParamType::File => "file" [INFO] [stderr] 122 | | }.to_string() [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] 115 | match *self { [INFO] [stderr] 116 | ParamType::String => "string", [INFO] [stderr] 117 | ParamType::Number => "number", [INFO] [stderr] 118 | ParamType::Integer => "integer", [INFO] [stderr] 119 | ParamType::Boolean => "boolean", [INFO] [stderr] 120 | ParamType::Array => "array", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:141:9 [INFO] [stderr] | [INFO] [stderr] 141 | / match self { [INFO] [stderr] 142 | | &ItemType::String => "string", [INFO] [stderr] 143 | | &ItemType::Number => "number", [INFO] [stderr] 144 | | &ItemType::Integer => "integer", [INFO] [stderr] 145 | | &ItemType::Boolean => "boolean", [INFO] [stderr] 146 | | &ItemType::Array => "array" [INFO] [stderr] 147 | | }.to_string() [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] 141 | match *self { [INFO] [stderr] 142 | ItemType::String => "string", [INFO] [stderr] 143 | ItemType::Number => "number", [INFO] [stderr] 144 | ItemType::Integer => "integer", [INFO] [stderr] 145 | ItemType::Boolean => "boolean", [INFO] [stderr] 146 | ItemType::Array => "array" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/batteries/swagger.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | / match &self.ext { [INFO] [stderr] 194 | | &ParamExt::BodyParam(ref schema) => param.set("schema", schema.clone()), [INFO] [stderr] 195 | | &ParamExt::NormalParam{ref type_, ref format, ..} => { [INFO] [stderr] 196 | | param.set("type", type_.to_string()); [INFO] [stderr] ... | [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 193 | match self.ext { [INFO] [stderr] 194 | ParamExt::BodyParam(ref schema) => param.set("schema", schema.clone()), [INFO] [stderr] 195 | ParamExt::NormalParam{ref type_, ref format, ..} => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/batteries/swagger.rs:273:18 [INFO] [stderr] | [INFO] [stderr] 273 | .or(app.root_api.version.clone().map(|v| v.version)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| app.root_api.version.clone().map(|v| v.version))` [INFO] [stderr] | [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 match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/batteries/swagger.rs:298:17 [INFO] [stderr] | [INFO] [stderr] 298 | / match app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 300 | | if base_path.len() > 1 { [INFO] [stderr] 301 | | base_path.push_str("/") [INFO] [stderr] ... | [INFO] [stderr] 305 | | _ => () [INFO] [stderr] 306 | | } [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] 298 | if let &framework::Version{ref version, versioning: framework::Versioning::Path} = app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | if base_path.len() > 1 { [INFO] [stderr] 300 | base_path.push_str("/") [INFO] [stderr] 301 | } [INFO] [stderr] 302 | base_path.push_str(&version); [INFO] [stderr] 303 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:298:17 [INFO] [stderr] | [INFO] [stderr] 298 | / match app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 300 | | if base_path.len() > 1 { [INFO] [stderr] 301 | | base_path.push_str("/") [INFO] [stderr] ... | [INFO] [stderr] 305 | | _ => () [INFO] [stderr] 306 | | } [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] 298 | match *app.root_api.version.as_ref().unwrap() { [INFO] [stderr] 299 | framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/batteries/swagger.rs:431:95 [INFO] [stderr] | [INFO] [stderr] 431 | fn fill_paths<'a>(mut context: WalkContext<'a>, paths: &mut jsonway::ObjectBuilder, handlers: &framework::ApiHandlers) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [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/batteries/swagger.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | / match api.version.as_ref().unwrap() { [INFO] [stderr] 444 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 445 | | path.push_str(&version); [INFO] [stderr] 446 | | path.push_str("/"); [INFO] [stderr] 447 | | }, [INFO] [stderr] 448 | | _ => () [INFO] [stderr] 449 | | } [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] 443 | if let &framework::Version{ref version, versioning: framework::Versioning::Path} = api.version.as_ref().unwrap() { [INFO] [stderr] 444 | path.push_str(&version); [INFO] [stderr] 445 | path.push_str("/"); [INFO] [stderr] 446 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/batteries/swagger.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | / match api.version.as_ref().unwrap() { [INFO] [stderr] 444 | | &framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] 445 | | path.push_str(&version); [INFO] [stderr] 446 | | path.push_str("/"); [INFO] [stderr] 447 | | }, [INFO] [stderr] 448 | | _ => () [INFO] [stderr] 449 | | } [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] 443 | match *api.version.as_ref().unwrap() { [INFO] [stderr] 444 | framework::Version{ref version, versioning: framework::Versioning::Path} => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/batteries/swagger.rs:475:16 [INFO] [stderr] | [INFO] [stderr] 475 | if endpoint.path.path.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!endpoint.path.path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/batteries/swagger.rs:610:25 [INFO] [stderr] | [INFO] [stderr] 610 | / match param.place { [INFO] [stderr] 611 | | Place::Query => param.place = Place::FormData, [INFO] [stderr] 612 | | _ => () [INFO] [stderr] 613 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Place::Query = param.place { param.place = Place::FormData }` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/batteries/swagger.rs:641:9 [INFO] [stderr] | [INFO] [stderr] 641 | let ref original_path = path.path; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------- help: try: `let original_path = &path.path;` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/batteries/swagger.rs:647:5 [INFO] [stderr] | [INFO] [stderr] 647 | / match ¶m.coercer { [INFO] [stderr] 648 | | &Some(ref coercer) => { [INFO] [stderr] 649 | | match coercer.get_primitive_type() { [INFO] [stderr] 650 | | json_dsl::PrimitiveType::String => ParamType::String, [INFO] [stderr] ... | [INFO] [stderr] 659 | | &None => ParamType::String [INFO] [stderr] 660 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 647 | match param.coercer { [INFO] [stderr] 648 | Some(ref coercer) => { [INFO] [stderr] 649 | match coercer.get_primitive_type() { [INFO] [stderr] 650 | json_dsl::PrimitiveType::String => ParamType::String, [INFO] [stderr] 651 | json_dsl::PrimitiveType::I64 => ParamType::Integer, [INFO] [stderr] 652 | json_dsl::PrimitiveType::F64 => ParamType::Number, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> examples/simple.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> examples/simple.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | return "UnauthorizedError"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"UnauthorizedError"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> examples/simple.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | / return Some(rustless::Response::from( [INFO] [stderr] 48 | | status::StatusCode::Unauthorized, [INFO] [stderr] 49 | | Box::new("Please provide correct `token` parameter") [INFO] [stderr] 50 | | )) [INFO] [stderr] | |______________________^ [INFO] [stderr] | [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] 47 | Some(rustless::Response::from( [INFO] [stderr] 48 | status::StatusCode::Unauthorized, [INFO] [stderr] 49 | Box::new("Please provide correct `token` parameter") [INFO] [stderr] 50 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> examples/simple.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | / return Err(rustless::ErrorResponse{ [INFO] [stderr] 97 | | error: Box::new(UnauthorizedError) as Box, [INFO] [stderr] 98 | | response: None [INFO] [stderr] 99 | | }) [INFO] [stderr] | |__________________^ [INFO] [stderr] | [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] 96 | Err(rustless::ErrorResponse{ [INFO] [stderr] 97 | error: Box::new(UnauthorizedError) as Box, [INFO] [stderr] 98 | response: None [INFO] [stderr] 99 | }) [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] --> examples/simple.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | / match params.find("token") { [INFO] [stderr] 90 | | // We can unwrap() safely because token in validated already [INFO] [stderr] 91 | | Some(token) => if token.as_str().unwrap() == "password1" { return Ok(()) }, [INFO] [stderr] 92 | | None => () [INFO] [stderr] 93 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Some(token) = params.find("token") { if token.as_str().unwrap() == "password1" { return Ok(()) } }` [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> examples/simple.rs:145:51 [INFO] [stderr] | [INFO] [stderr] 145 | chain.link(::rustless::batteries::cookie::new("secretsecretsecretsecretsecretsecretsecret".as_bytes())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"secretsecretsecretsecretsecretsecretsecret"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 21.46s [INFO] running `"docker" "inspect" "933018dac5bfccdc0fc7e8814805d2d362f3cf8f76ddb48df8c58f85a61c4713"` [INFO] running `"docker" "rm" "-f" "933018dac5bfccdc0fc7e8814805d2d362f3cf8f76ddb48df8c58f85a61c4713"` [INFO] [stdout] 933018dac5bfccdc0fc7e8814805d2d362f3cf8f76ddb48df8c58f85a61c4713