[INFO] fetching crate webdav-handler 0.2.0... [INFO] linting webdav-handler-0.2.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate webdav-handler 0.2.0 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate webdav-handler 0.2.0 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate webdav-handler 0.2.0 [INFO] tweaked toml for crates.io crate webdav-handler 0.2.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate webdav-handler 0.2.0 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate webdav-handler 0.2.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded actix-utils v3.0.0 [INFO] [stderr] Downloaded slab v0.4.3 [INFO] [stderr] Downloaded socket2 v0.4.0 [INFO] [stderr] Downloaded buf_redux v0.8.4 [INFO] [stderr] Downloaded futures-sink v0.3.15 [INFO] [stderr] Downloaded pest_meta v2.1.3 [INFO] [stderr] Downloaded indexmap v1.6.2 [INFO] [stderr] Downloaded actix-router v0.2.7 [INFO] [stderr] Downloaded pest_generator v2.1.3 [INFO] [stderr] Downloaded headers-core v0.2.0 [INFO] [stderr] Downloaded tokio-macros v1.1.0 [INFO] [stderr] Downloaded actix-codec v0.4.0 [INFO] [stderr] Downloaded unicode-bidi v0.3.5 [INFO] [stderr] Downloaded actix-web v4.0.0-beta.6 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.74 [INFO] [stderr] Downloaded tungstenite v0.12.0 [INFO] [stderr] Downloaded bytestring v1.0.0 [INFO] [stderr] Downloaded brotli2 v0.3.2 [INFO] [stderr] Downloaded pest v2.1.3 [INFO] [stderr] Downloaded wasm-bindgen v0.2.74 [INFO] [stderr] Downloaded local-channel v0.1.2 [INFO] [stderr] Downloaded actix-macros v0.2.0 [INFO] [stderr] Downloaded http v0.2.4 [INFO] [stderr] Downloaded cpufeatures v0.1.1 [INFO] [stderr] Downloaded hyper v0.14.7 [INFO] [stderr] Downloaded futures-core v0.3.15 [INFO] [stderr] Downloaded futures-executor v0.3.15 [INFO] [stderr] Downloaded time v0.2.26 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.74 [INFO] [stderr] Downloaded futures v0.3.15 [INFO] [stderr] Downloaded brotli-sys v0.3.2 [INFO] [stderr] Downloaded actix-rt v2.2.0 [INFO] [stderr] Downloaded headers v0.3.4 [INFO] [stderr] Downloaded httparse v1.4.1 [INFO] [stderr] Downloaded futures-task v0.3.15 [INFO] [stderr] Downloaded futures-util v0.3.15 [INFO] [stderr] Downloaded actix-tls v3.0.0-beta.5 [INFO] [stderr] Downloaded const_fn v0.4.7 [INFO] [stderr] Downloaded input_buffer v0.4.0 [INFO] [stderr] Downloaded actix-http v3.0.0-beta.6 [INFO] [stderr] Downloaded local-waker v0.1.1 [INFO] [stderr] Downloaded ucd-trie v0.1.3 [INFO] [stderr] Downloaded actix-web-codegen v0.5.0-beta.2 [INFO] [stderr] Downloaded sha-1 v0.8.2 [INFO] [stderr] Downloaded typenum v1.13.0 [INFO] [stderr] Downloaded h2 v0.3.3 [INFO] [stderr] Downloaded lru v0.6.5 [INFO] [stderr] Downloaded tinyvec v1.2.0 [INFO] [stderr] Downloaded ahash v0.7.2 [INFO] [stderr] Downloaded htmlescape v0.3.1 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.74 [INFO] [stderr] Downloaded pin-project-internal v1.0.7 [INFO] [stderr] Downloaded futures-channel v0.3.15 [INFO] [stderr] Downloaded tokio-tungstenite v0.13.0 [INFO] [stderr] Downloaded actix-server v2.0.0-beta.5 [INFO] [stderr] Downloaded tracing v0.1.26 [INFO] [stderr] Downloaded paste v1.0.5 [INFO] [stderr] Downloaded actix-service v2.0.0 [INFO] [stderr] Downloaded cookie v0.15.0 [INFO] [stderr] Downloaded encoding_rs v0.8.28 [INFO] [stderr] Downloaded handlebars v3.5.5 [INFO] [stderr] Downloaded mime_guess v2.0.3 [INFO] [stderr] Downloaded futures-io v0.3.15 [INFO] [stderr] Downloaded sha-1 v0.9.6 [INFO] [stderr] Downloaded tokio v1.5.0 [INFO] [stderr] Downloaded libc v0.2.94 [INFO] [stderr] Downloaded http-body v0.4.2 [INFO] [stderr] Downloaded multipart v0.17.1 [INFO] [stderr] Downloaded tokio-stream v0.1.5 [INFO] [stderr] Downloaded futures-macro v0.3.15 [INFO] [stderr] Downloaded warp v0.3.1 [INFO] [stderr] Downloaded derive_more v0.99.13 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.74 [INFO] [stderr] Downloaded tempfile v3.2.0 [INFO] [stderr] Downloaded pin-project v1.0.7 [INFO] [stderr] Downloaded pest_derive v2.1.0 [INFO] [stderr] Downloaded tracing-core v0.1.18 [INFO] [stderr] Downloaded twoway v0.1.8 [INFO] [stderr] Downloaded tokio-util v0.6.6 [INFO] [stderr] Downloaded httpdate v1.0.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 25c4155b3b7eacd50acf0b67b93f5f8110422504cd42a2698275df9ae5c552e5 [INFO] running `Command { std: "docker" "start" "-a" "25c4155b3b7eacd50acf0b67b93f5f8110422504cd42a2698275df9ae5c552e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "25c4155b3b7eacd50acf0b67b93f5f8110422504cd42a2698275df9ae5c552e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "25c4155b3b7eacd50acf0b67b93f5f8110422504cd42a2698275df9ae5c552e5", kill_on_drop: false }` [INFO] [stdout] 25c4155b3b7eacd50acf0b67b93f5f8110422504cd42a2698275df9ae5c552e5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c10e7eb0aaa543ae178c21678917be860d0495fd3647bd452d14544e789f3811 [INFO] running `Command { std: "docker" "start" "-a" "c10e7eb0aaa543ae178c21678917be860d0495fd3647bd452d14544e789f3811", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.26 [INFO] [stderr] Compiling syn v1.0.72 [INFO] [stderr] Compiling libc v0.2.94 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling futures-core v0.3.15 [INFO] [stderr] Checking pin-project-lite v0.2.6 [INFO] [stderr] Checking itoa v0.4.7 [INFO] [stderr] Checking bytes v1.0.1 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Checking futures-sink v0.3.15 [INFO] [stderr] Compiling futures-channel v0.3.15 [INFO] [stderr] Compiling futures-macro v0.3.15 [INFO] [stderr] Compiling futures-task v0.3.15 [INFO] [stderr] Compiling typenum v1.13.0 [INFO] [stderr] Compiling futures-util v0.3.15 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Compiling standback v0.2.17 [INFO] [stderr] Compiling unicase v2.6.0 [INFO] [stderr] Compiling tokio v1.5.0 [INFO] [stderr] Checking slab v0.4.3 [INFO] [stderr] Checking ahash v0.4.7 [INFO] [stderr] Compiling ucd-trie v0.1.3 [INFO] [stderr] Checking futures-io v0.3.15 [INFO] [stderr] Checking once_cell v1.7.2 [INFO] [stderr] Compiling serde v1.0.125 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Checking matches v0.1.8 [INFO] [stderr] Checking hashbrown v0.9.1 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling maplit v1.0.2 [INFO] [stderr] Checking tinyvec v1.2.0 [INFO] [stderr] Checking http v0.2.4 [INFO] [stderr] Compiling pest v2.1.3 [INFO] [stderr] Compiling indexmap v1.6.2 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling serde_json v1.0.64 [INFO] [stderr] Compiling const_fn v0.4.7 [INFO] [stderr] Compiling mime_guess v2.0.3 [INFO] [stderr] Checking unicode-bidi v0.3.5 [INFO] [stderr] Checking tracing-core v0.1.18 [INFO] [stderr] Compiling time v0.2.26 [INFO] [stderr] Checking opaque-debug v0.3.0 [INFO] [stderr] Checking cpufeatures v0.1.1 [INFO] [stderr] Compiling httparse v1.4.1 [INFO] [stderr] Checking percent-encoding v2.1.0 [INFO] [stderr] Checking mime v0.3.16 [INFO] [stderr] Checking parking_lot_core v0.8.3 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking signal-hook-registry v1.3.0 [INFO] [stderr] Checking mio v0.7.11 [INFO] [stderr] Checking form_urlencoded v1.0.1 [INFO] [stderr] Checking parking_lot v0.11.1 [INFO] [stderr] Checking tracing v0.1.26 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking time v0.1.43 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Checking xml-rs v0.8.3 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Checking try-lock v0.2.3 [INFO] [stderr] Checking uuid v0.8.2 [INFO] [stderr] Checking want v0.3.0 [INFO] [stderr] Compiling pest_meta v2.1.3 [INFO] [stderr] Checking unicode-normalization v0.1.17 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking socket2 v0.4.0 [INFO] [stderr] Checking lru v0.6.5 [INFO] [stderr] Checking tower-service v0.3.1 [INFO] [stderr] Checking percent-encoding v1.0.1 [INFO] [stderr] Checking htmlescape v0.3.1 [INFO] [stderr] Checking httpdate v1.0.0 [INFO] [stderr] Checking sha-1 v0.9.6 [INFO] [stderr] Checking clap v2.33.3 [INFO] [stderr] Checking env_logger v0.8.3 [INFO] [stderr] Checking xmltree v0.10.3 [INFO] [stderr] Checking http-body v0.4.2 [INFO] [stderr] Checking headers-core v0.2.0 [INFO] [stderr] Checking headers v0.3.4 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking url v2.2.2 [INFO] [stderr] Compiling pest_generator v2.1.3 [INFO] [stderr] Compiling tokio-macros v1.1.0 [INFO] [stderr] Compiling pin-project-internal v1.0.7 [INFO] [stderr] Compiling time-macros-impl v0.1.1 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Checking time-macros v0.1.1 [INFO] [stderr] Checking handlebars v3.5.5 [INFO] [stderr] Checking pin-project v1.0.7 [INFO] [stderr] Checking futures-executor v0.3.15 [INFO] [stderr] Checking futures v0.3.15 [INFO] [stderr] Checking tokio-util v0.6.6 [INFO] [stderr] Checking webdav-handler v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/davheaders.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | use url; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/davheaders.rs:295:17 [INFO] [stdout] | [INFO] [stdout] 295 | weak: weak, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `weak` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/davheaders.rs:326:17 [INFO] [stdout] | [INFO] [stdout] 326 | weak: weak, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `weak` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/errors.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | use xml; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/handle_gethead.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | use htmlescape; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle_gethead.rs:314:29 [INFO] [stdout] | [INFO] [stdout] 314 | ... meta: meta, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | const NS_APACHE_URI: &'static str = "http://apache.org/dav/props/"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:32:20 [INFO] [stdout] | [INFO] [stdout] 32 | const NS_DAV_URI: &'static str = "DAV:"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | const NS_MS_URI: &'static str = "urn:schemas-microsoft-com:"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | const PROPNAME_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:36:32 [INFO] [stdout] | [INFO] [stdout] 36 | const PROPNAME_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:54:21 [INFO] [stdout] | [INFO] [stdout] 54 | const ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:54:31 [INFO] [stdout] | [INFO] [stdout] 54 | const ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:68:24 [INFO] [stdout] | [INFO] [stdout] 68 | const MS_ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:68:34 [INFO] [stdout] | [INFO] [stdout] 68 | const MS_ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle_props.rs:570:13 [INFO] [stdout] | [INFO] [stdout] 570 | emitter: emitter, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `emitter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle_props.rs:573:13 [INFO] [stdout] | [INFO] [stdout] 573 | props: props, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `props` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_put.rs:17:15 [INFO] [stdout] | [INFO] [stdout] 17 | const SABRE: &'static str = "application/x-sabredav-partialupdate"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | dir: dir, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `dir` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | dir_modtime: dir_modtime, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_modtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | dir_id: dir_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:204:17 [INFO] [stdout] | [INFO] [stdout] 204 | dir_modtime: dir_modtime, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_modtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:205:17 [INFO] [stdout] | [INFO] [stdout] 205 | dir_id: dir_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/multierror.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | use xml; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/tree.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | id: id, [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/tree.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | data: data, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace it with: `data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/tree.rs:92:22 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn get_child(&self, parent: u64, key: &Q) -> FsResult [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 95 | Q: Hash + Eq, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/xmltree_ext.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | use xml; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | token: token, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | shared: shared, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | deep: deep, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `deep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:99:13 [INFO] [stdout] | [INFO] [stdout] 99 | shared: shared, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:100:13 [INFO] [stdout] | [INFO] [stdout] 100 | deep: deep, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `deep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:138:13 [INFO] [stdout] | [INFO] [stdout] 138 | public: public, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `public` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:139:13 [INFO] [stdout] | [INFO] [stdout] 139 | macos: macos, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `macos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | case_insensitive: case_insensitive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `case_insensitive` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:158:13 [INFO] [stdout] | [INFO] [stdout] 158 | public: public, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `public` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | public: public, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `public` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:184:13 [INFO] [stdout] | [INFO] [stdout] 184 | macos: macos, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `macos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:185:13 [INFO] [stdout] | [INFO] [stdout] 185 | case_insensitive: case_insensitive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `case_insensitive` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:187:13 [INFO] [stdout] | [INFO] [stdout] 187 | fs_access_guard: fs_access_guard, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fs_access_guard` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:464:21 [INFO] [stdout] | [INFO] [stdout] 464 | meta: meta, [INFO] [stdout] | ^^^^^^^^^^^ help: replace it with: `meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:465:21 [INFO] [stdout] | [INFO] [stdout] 465 | entry: entry, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `entry` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:107:13 [INFO] [stdout] | [INFO] [stdout] 107 | node_id: node_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:490:13 [INFO] [stdout] | [INFO] [stdout] 490 | mtime: mtime, [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `mtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:491:13 [INFO] [stdout] | [INFO] [stdout] 491 | crtime: crtime, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `crtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:492:13 [INFO] [stdout] | [INFO] [stdout] 492 | is_dir: is_dir, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `is_dir` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | timeout_at: timeout_at, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeout_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | timeout: timeout, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeout` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 82 | shared: shared, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:83:13 [INFO] [stdout] | [INFO] [stdout] 83 | deep: deep, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `deep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking h2 v0.3.3 [INFO] [stdout] warning: field `id` is never read [INFO] [stdout] --> src/tree.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct Node { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 22 | pub data: D, [INFO] [stdout] 23 | id: u64, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `locks` is never read [INFO] [stdout] --> src/memls.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | struct MemLsInner { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 29 | tree: Tree, [INFO] [stdout] 30 | locks: HashMap, u64>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MemLsInner` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/async_stream.rs:113:11 [INFO] [stdout] | [INFO] [stdout] 113 | fut: Option> + 'static + Send>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/conditional.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | / match hdr { [INFO] [stdout] 30 | | &davheaders::IfRange::Date(ref d) => { [INFO] [stdout] 31 | | match date { [INFO] [stdout] 32 | | Some(date) => round_time(date) == round_time(*d), [INFO] [stdout] ... | [INFO] [stdout] 41 | | }, [INFO] [stdout] 42 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 29 ~ match *hdr { [INFO] [stdout] 30 ~ davheaders::IfRange::Date(ref d) => { [INFO] [stdout] 31 | match date { [INFO] [stdout] ... [INFO] [stdout] 35 | }, [INFO] [stdout] 36 ~ davheaders::IfRange::ETag(ref t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | &davheaders::IfRange::Date(ref d) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 30 - &davheaders::IfRange::Date(ref d) => { [INFO] [stdout] 30 + davheaders::IfRange::Date(d) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | &davheaders::IfRange::ETag(ref t) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 36 - &davheaders::IfRange::ETag(ref t) => { [INFO] [stdout] 36 + davheaders::IfRange::ETag(t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/conditional.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | / match tags { [INFO] [stdout] 52 | | &davheaders::ETagList::Star => exists, [INFO] [stdout] 53 | | &davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] 54 | | match tag { [INFO] [stdout] ... | [INFO] [stdout] 58 | | }, [INFO] [stdout] 59 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 51 ~ match *tags { [INFO] [stdout] 52 ~ davheaders::ETagList::Star => exists, [INFO] [stdout] 53 ~ davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | &davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 53 - &davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] 53 + davheaders::ETagList::Tags(t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:63:57 [INFO] [stdout] | [INFO] [stdout] 63 | pub(crate) fn http_if_match(req: &Request, meta: Option<&Box>) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavMetaData` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/conditional.rs:67:34 [INFO] [stdout] | [INFO] [stdout] 67 | let etag = meta.and_then(|m| ETag::from_meta(m)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ETag::from_meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/conditional.rs:85:34 [INFO] [stdout] | [INFO] [stdout] 85 | let etag = meta.and_then(|m| ETag::from_meta(m)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ETag::from_meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:88:16 [INFO] [stdout] | [INFO] [stdout] 88 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------ [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::GET` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:88:48 [INFO] [stdout] | [INFO] [stdout] 88 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::HEAD` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------ [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::GET` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:95:44 [INFO] [stdout] | [INFO] [stdout] 95 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::HEAD` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | fs: &'a Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavFileSystem + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:134:17 [INFO] [stdout] | [INFO] [stdout] 134 | &davheaders::IfItem::StateToken(ref t) => Some(t.to_owned()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 134 - &davheaders::IfItem::StateToken(ref t) => Some(t.to_owned()), [INFO] [stdout] 134 + davheaders::IfItem::StateToken(t) => Some(t.to_owned()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/conditional.rs:141:12 [INFO] [stdout] | [INFO] [stdout] 141 | if any_list_ok == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `any_list_ok` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/conditional.rs:170:25 [INFO] [stdout] | [INFO] [stdout] 170 | / match ls { [INFO] [stdout] 171 | | &Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] 172 | | &None => false, [INFO] [stdout] 173 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 170 ~ match *ls { [INFO] [stdout] 171 ~ Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] 172 ~ None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:171:29 [INFO] [stdout] | [INFO] [stdout] 171 | ... &Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 171 - &Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] 171 + Some(ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:217:18 [INFO] [stdout] | [INFO] [stdout] 217 | meta: Option<&'a Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavMetaData + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | fs: &'a Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavFileSystem + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:233:18 [INFO] [stdout] | [INFO] [stdout] 233 | meta: Option<&'a Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavMetaData + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | fs: &'a Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavFileSystem + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:133:41 [INFO] [stdout] | [INFO] [stdout] 133 | allow: new.allow.or(self.allow.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.allow` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:135:49 [INFO] [stdout] | [INFO] [stdout] 135 | hide_symlinks: new.hide_symlinks.or(self.hide_symlinks.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.hide_symlinks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:136:45 [INFO] [stdout] | [INFO] [stdout] 136 | autoindex: new.autoindex.or(self.autoindex.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.autoindex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:184:28 [INFO] [stdout] | [INFO] [stdout] 184 | hide_symlinks: cfg.hide_symlinks.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cfg.hide_symlinks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:185:28 [INFO] [stdout] | [INFO] [stdout] 185 | autoindex: cfg.autoindex.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cfg.autoindex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:197:28 [INFO] [stdout] | [INFO] [stdout] 197 | allow: self.allow.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.allow` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:199:28 [INFO] [stdout] | [INFO] [stdout] 199 | hide_symlinks: self.hide_symlinks.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.hide_symlinks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:200:28 [INFO] [stdout] | [INFO] [stdout] 200 | autoindex: self.autoindex.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.autoindex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DavHandler` [INFO] [stdout] --> src/davhandler.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | / pub fn new() -> DavHandler { [INFO] [stdout] 214 | | DavHandler { [INFO] [stdout] 215 | | config: Arc::new(DavConfig::default()), [INFO] [stdout] 216 | | } [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 206 + impl Default for DavHandler { [INFO] [stdout] 207 + fn default() -> Self { [INFO] [stdout] 208 + Self::new() [INFO] [stdout] 209 + } [INFO] [stdout] 210 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/davhandler.rs:327:38 [INFO] [stdout] | [INFO] [stdout] 327 | pub(crate) async fn read_request<'a, ReqBody, ReqData, ReqError>( [INFO] [stdout] | ^^ [INFO] [stdout] 328 | &'a self, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davhandler.rs:480:20 [INFO] [stdout] | [INFO] [stdout] 480 | if body_data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!body_data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/davheaders.rs:148:17 [INFO] [stdout] | [INFO] [stdout] 148 | let h = match headers::Vary::decode(values) { [INFO] [stdout] | _________________^ [INFO] [stdout] 149 | | Err(e) => return Err(e), [INFO] [stdout] 150 | | Ok(h) => h, [INFO] [stdout] 151 | | }; [INFO] [stdout] | |_________^ help: try instead: `headers::Vary::decode(values)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/davheaders.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | return Ok(Timeout(v)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 202 - return Ok(Timeout(v)); [INFO] [stdout] 202 + Ok(Timeout(v)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this manual char comparison can be written more succinctly [INFO] [stdout] --> src/davheaders.rs:187:64 [INFO] [stdout] | [INFO] [stdout] 187 | let words = value.to_str().map_err(map_invalid)?.split(|c| c == ','); [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using a `char`: `','` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_pattern_char_comparison [INFO] [stdout] = note: `#[warn(clippy::manual_pattern_char_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | / match s { [INFO] [stdout] 215 | | &DavTimeout::Seconds(n) => value.push_str(&format!("Second-{}", n)), [INFO] [stdout] 216 | | &DavTimeout::Infinite => value.push_str("Infinite"), [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 214 ~ match *s { [INFO] [stdout] 215 ~ DavTimeout::Seconds(n) => value.push_str(&format!("Second-{}", n)), [INFO] [stdout] 216 ~ DavTimeout::Infinite => value.push_str("Infinite"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/davheaders.rs:319:20 [INFO] [stdout] | [INFO] [stdout] 319 | (true, &t[2..]) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/davheaders.rs:318:25 [INFO] [stdout] | [INFO] [stdout] 318 | let (weak, s) = if t.starts_with("W/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 318 ~ let (weak, s) = if let Some() = t.strip_prefix("W/") { [INFO] [stdout] 319 ~ (true, ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:402:9 [INFO] [stdout] | [INFO] [stdout] 402 | / match self { [INFO] [stdout] 403 | | &IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] 404 | | &IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] 405 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 402 ~ match *self { [INFO] [stdout] 403 ~ IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] 404 ~ IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/davheaders.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | &IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 403 - &IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] 403 + IfRange::Date(d) => d.encode(values), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/davheaders.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | &IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 404 - &IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] 404 + IfRange::ETag(t) => t.encode(values), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:450:17 [INFO] [stdout] | [INFO] [stdout] 450 | let value = match m { [INFO] [stdout] | _________________^ [INFO] [stdout] 451 | | &ETagList::Star => "*".to_string(), [INFO] [stdout] 452 | | &ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] 453 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 450 ~ let value = match *m { [INFO] [stdout] 451 ~ ETagList::Star => "*".to_string(), [INFO] [stdout] 452 ~ ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/davheaders.rs:452:9 [INFO] [stdout] | [INFO] [stdout] 452 | &ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 452 - &ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] 452 + ETagList::Tags(t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/davheaders.rs:531:9 [INFO] [stdout] | [INFO] [stdout] 531 | return Err(invalid()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 531 - return Err(invalid()); [INFO] [stdout] 531 + Err(invalid()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:517:12 [INFO] [stdout] | [INFO] [stdout] 517 | if nums[0] != "" && nums[1] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[0].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:517:29 [INFO] [stdout] | [INFO] [stdout] 517 | if nums[0] != "" && nums[1] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[1].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:523:12 [INFO] [stdout] | [INFO] [stdout] 523 | if nums[0] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[0].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:528:12 [INFO] [stdout] | [INFO] [stdout] 528 | if nums[1] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[1].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:536:21 [INFO] [stdout] | [INFO] [stdout] 536 | let value = match self { [INFO] [stdout] | _____________________^ [INFO] [stdout] 537 | | &XUpdateRange::Append => "append".to_string(), [INFO] [stdout] 538 | | &XUpdateRange::FromTo(b, e) => format!("{}-{}", b, e), [INFO] [stdout] 539 | | &XUpdateRange::AllFrom(b) => format!("{}-", b), [INFO] [stdout] 540 | | &XUpdateRange::Last(e) => format!("-{}", e), [INFO] [stdout] 541 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 536 ~ let value = match *self { [INFO] [stdout] 537 ~ XUpdateRange::Append => "append".to_string(), [INFO] [stdout] 538 ~ XUpdateRange::FromTo(b, e) => format!("{}-{}", b, e), [INFO] [stdout] 539 ~ XUpdateRange::AllFrom(b) => format!("{}-", b), [INFO] [stdout] 540 ~ XUpdateRange::Last(e) => format!("-{}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/davheaders.rs:605:5 [INFO] [stdout] | [INFO] [stdout] 605 | b" \t\r\n".iter().any(|&x| x == c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b" \t\r\n".contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/davheaders.rs:608:5 [INFO] [stdout] | [INFO] [stdout] 608 | b"<>()[]".iter().any(|&x| x == c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b"<>()[]".contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/davheaders.rs:611:14 [INFO] [stdout] | [INFO] [stdout] 611 | fn trim_left<'a>(mut out: &'a [u8]) -> &'a [u8] { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 611 - fn trim_left<'a>(mut out: &'a [u8]) -> &'a [u8] { [INFO] [stdout] 611 + fn trim_left(mut out: &[u8]) -> &[u8] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/davheaders.rs:648:14 [INFO] [stdout] | [INFO] [stdout] 648 | fn get_token<'a>(buf: &'a [u8]) -> Result<(IfToken, &'a [u8]), headers::Error> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 648 - fn get_token<'a>(buf: &'a [u8]) -> Result<(IfToken, &'a [u8]), headers::Error> { [INFO] [stdout] 648 + fn get_token(buf: &[u8]) -> Result<(IfToken, &[u8]), headers::Error> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davheaders.rs:706:32 [INFO] [stdout] | [INFO] [stdout] 706 | ... if if_lists.0.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!if_lists.0.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/errors.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | / match self { [INFO] [stdout] 36 | | &DavError::FsError(ref e) => Some(e), [INFO] [stdout] 37 | | &DavError::IoError(ref e) => Some(e), [INFO] [stdout] 38 | | &DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] 39 | | &DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] 40 | | _ => None, [INFO] [stdout] 41 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 35 ~ match *self { [INFO] [stdout] 36 ~ DavError::FsError(ref e) => Some(e), [INFO] [stdout] 37 ~ DavError::IoError(ref e) => Some(e), [INFO] [stdout] 38 ~ DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] 39 ~ DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | &DavError::FsError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 36 - &DavError::FsError(ref e) => Some(e), [INFO] [stdout] 36 + DavError::FsError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | &DavError::IoError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 37 - &DavError::IoError(ref e) => Some(e), [INFO] [stdout] 37 + DavError::IoError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | &DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 38 - &DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] 38 + DavError::XmlReaderError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | &DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 39 - &DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] 39 + DavError::XmlWriterError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/errors.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | / match self { [INFO] [stdout] 48 | | &DavError::XmlReaderError(_) => write!(f, "XML parse error"), [INFO] [stdout] 49 | | &DavError::XmlWriterError(_) => write!(f, "XML generate error"), [INFO] [stdout] 50 | | &DavError::IoError(_) => write!(f, "I/O error"), [INFO] [stdout] 51 | | _ => write!(f, "{:?}", self), [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 47 ~ match *self { [INFO] [stdout] 48 ~ DavError::XmlReaderError(_) => write!(f, "XML parse error"), [INFO] [stdout] 49 ~ DavError::XmlWriterError(_) => write!(f, "XML generate error"), [INFO] [stdout] 50 ~ DavError::IoError(_) => write!(f, "I/O error"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | _ => io::Error::new(io::ErrorKind::Other, e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 67 - _ => io::Error::new(io::ErrorKind::Other, e), [INFO] [stdout] 67 + _ => io::Error::other(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:122:36 [INFO] [stdout] | [INFO] [stdout] 122 | FsError::NotImplemented => io::Error::new(io::ErrorKind::Other, "NotImplemented"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 122 - FsError::NotImplemented => io::Error::new(io::ErrorKind::Other, "NotImplemented"), [INFO] [stdout] 122 + FsError::NotImplemented => io::Error::other("NotImplemented"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:123:36 [INFO] [stdout] | [INFO] [stdout] 123 | FsError::GeneralFailure => io::Error::new(io::ErrorKind::Other, "GeneralFailure"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 123 - FsError::GeneralFailure => io::Error::new(io::ErrorKind::Other, "GeneralFailure"), [INFO] [stdout] 123 + FsError::GeneralFailure => io::Error::other("GeneralFailure"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:127:41 [INFO] [stdout] | [INFO] [stdout] 127 | FsError::InsufficientStorage => io::Error::new(io::ErrorKind::Other, "InsufficientStorage"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 127 - FsError::InsufficientStorage => io::Error::new(io::ErrorKind::Other, "InsufficientStorage"), [INFO] [stdout] 127 + FsError::InsufficientStorage => io::Error::other("InsufficientStorage"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:128:34 [INFO] [stdout] | [INFO] [stdout] 128 | FsError::LoopDetected => io::Error::new(io::ErrorKind::Other, "LoopDetected"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 128 - FsError::LoopDetected => io::Error::new(io::ErrorKind::Other, "LoopDetected"), [INFO] [stdout] 128 + FsError::LoopDetected => io::Error::other("LoopDetected"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:129:33 [INFO] [stdout] | [INFO] [stdout] 129 | FsError::PathTooLong => io::Error::new(io::ErrorKind::Other, "PathTooLong"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 129 - FsError::PathTooLong => io::Error::new(io::ErrorKind::Other, "PathTooLong"), [INFO] [stdout] 129 + FsError::PathTooLong => io::Error::other("PathTooLong"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:130:30 [INFO] [stdout] | [INFO] [stdout] 130 | FsError::TooLarge => io::Error::new(io::ErrorKind::Other, "TooLarge"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 130 - FsError::TooLarge => io::Error::new(io::ErrorKind::Other, "TooLarge"), [INFO] [stdout] 130 + FsError::TooLarge => io::Error::other("TooLarge"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:131:30 [INFO] [stdout] | [INFO] [stdout] 131 | FsError::IsRemote => io::Error::new(io::ErrorKind::Other, "IsRemote"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 131 - FsError::IsRemote => io::Error::new(io::ErrorKind::Other, "IsRemote"), [INFO] [stdout] 131 + FsError::IsRemote => io::Error::other("IsRemote"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/errors.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / match self { [INFO] [stdout] 163 | | &DavError::XmlReadError => StatusCode::BAD_REQUEST, [INFO] [stdout] 164 | | &DavError::XmlParseError => StatusCode::BAD_REQUEST, [INFO] [stdout] 165 | | &DavError::InvalidPath => StatusCode::BAD_REQUEST, [INFO] [stdout] ... | [INFO] [stdout] 176 | | &DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 177 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 162 ~ match *self { [INFO] [stdout] 163 ~ DavError::XmlReadError => StatusCode::BAD_REQUEST, [INFO] [stdout] 164 ~ DavError::XmlParseError => StatusCode::BAD_REQUEST, [INFO] [stdout] 165 ~ DavError::InvalidPath => StatusCode::BAD_REQUEST, [INFO] [stdout] 166 ~ DavError::IllegalPath => StatusCode::BAD_GATEWAY, [INFO] [stdout] 167 ~ DavError::ForbiddenPath => StatusCode::FORBIDDEN, [INFO] [stdout] 168 ~ DavError::UnknownDavMethod => StatusCode::NOT_IMPLEMENTED, [INFO] [stdout] 169 ~ DavError::ChanError => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 170 ~ DavError::Utf8Error => StatusCode::UNSUPPORTED_MEDIA_TYPE, [INFO] [stdout] 171 ~ DavError::IoError(ref e) => ioerror_to_status(e), [INFO] [stdout] 172 ~ DavError::FsError(ref e) => fserror_to_status(e), [INFO] [stdout] 173 ~ DavError::Status(e) => e, [INFO] [stdout] 174 ~ DavError::StatusClose(e) => e, [INFO] [stdout] 175 ~ DavError::XmlReaderError(ref _e) => StatusCode::BAD_REQUEST, [INFO] [stdout] 176 ~ DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | &DavError::IoError(ref e) => ioerror_to_status(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 171 - &DavError::IoError(ref e) => ioerror_to_status(e), [INFO] [stdout] 171 + DavError::IoError(e) => ioerror_to_status(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | &DavError::FsError(ref e) => fserror_to_status(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 172 - &DavError::FsError(ref e) => fserror_to_status(e), [INFO] [stdout] 172 + DavError::FsError(e) => fserror_to_status(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:175:13 [INFO] [stdout] | [INFO] [stdout] 175 | &DavError::XmlReaderError(ref _e) => StatusCode::BAD_REQUEST, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 175 - &DavError::XmlReaderError(ref _e) => StatusCode::BAD_REQUEST, [INFO] [stdout] 175 + DavError::XmlReaderError(_e) => StatusCode::BAD_REQUEST, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:176:13 [INFO] [stdout] | [INFO] [stdout] 176 | &DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 176 - &DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 176 + DavError::XmlWriterError(_e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:48:45 [INFO] [stdout] | [INFO] [stdout] 48 | Err(e) => return add_status(&mut multierror, source, e).await, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:58:36 [INFO] [stdout] | [INFO] [stdout] 58 | add_status(&mut multierror, source, e).await [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:69:39 [INFO] [stdout] | [INFO] [stdout] 69 | return add_status(&mut multierror, dest, e).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:82:39 [INFO] [stdout] | [INFO] [stdout] 82 | return add_status(&mut multierror, source, e).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:93:49 [INFO] [stdout] | [INFO] [stdout] 93 | Err(e) => return add_status(&mut multierror, source, e).await, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:137:24 [INFO] [stdout] | [INFO] [stdout] 137 | add_status(&mut multierror, &source, e).await [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:137:41 [INFO] [stdout] | [INFO] [stdout] 137 | add_status(&mut multierror, &source, e).await [INFO] [stdout] | ^^^^^^^ help: change this to: `source` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_copymove.rs:150:25 [INFO] [stdout] | [INFO] [stdout] 150 | let overwrite = req [INFO] [stdout] | _________________________^ [INFO] [stdout] 151 | | .headers() [INFO] [stdout] 152 | | .typed_get::() [INFO] [stdout] 153 | | .map_or(true, |o| o.0); [INFO] [stdout] | |__________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 153 - .map_or(true, |o| o.0); [INFO] [stdout] 153 + .is_none_or(|o| o.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:168:34 [INFO] [stdout] | [INFO] [stdout] 168 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:216:48 [INFO] [stdout] | [INFO] [stdout] 216 | let tokens = match if_match_get_tokens(&req, Some(&meta), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_copymove.rs:226:29 [INFO] [stdout] | [INFO] [stdout] 226 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] = note: `#[warn(clippy::option_as_ref_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/handle_copymove.rs:248:28 [INFO] [stdout] | [INFO] [stdout] 248 | if let Err(_) = self [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 248 ~ if self [INFO] [stdout] 249 + .delete_items(&mut multierror, Depth::Infinity, dmeta.unwrap(), &dest) [INFO] [stdout] 250 + .await.is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/handle_copymove.rs:262:28 [INFO] [stdout] | [INFO] [stdout] 262 | if let Ok(_) = self.do_copy(&path, &dest, &dest, depth, &mut multierror).await { [INFO] [stdout] | -------^^^^^------------------------------------------------------------------ help: try: `if self.do_copy(&path, &dest, &dest, depth, &mut multierror).await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/handle_copymove.rs:272:28 [INFO] [stdout] | [INFO] [stdout] 272 | if let Ok(_) = self.do_move(&path, &dest, &mut multierror).await { [INFO] [stdout] | -------^^^^^---------------------------------------------------- help: try: `if self.do_move(&path, &dest, &mut multierror).await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:51:46 [INFO] [stdout] | [INFO] [stdout] 51 | Err(e) => Err(add_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:58:46 [INFO] [stdout] | [INFO] [stdout] 58 | Err(e) => Err(add_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:65:42 [INFO] [stdout] | [INFO] [stdout] 65 | Err(e) => Err(add_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:75:49 [INFO] [stdout] | [INFO] [stdout] 75 | result = Err(add_status(&mut res, path, e).await); [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:86:51 [INFO] [stdout] | [INFO] [stdout] 86 | if let Err(e) = self.delete_items(&mut res, depth, meta, &npath).await { [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:103:42 [INFO] [stdout] | [INFO] [stdout] 103 | Err(e) => Err(dir_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:118:34 [INFO] [stdout] | [INFO] [stdout] 118 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:128:46 [INFO] [stdout] | [INFO] [stdout] 128 | let tokens_res = if_match_get_tokens(&req, Some(&meta), &self.fs, &self.ls, &path).await; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_delete.rs:139:29 [INFO] [stdout] | [INFO] [stdout] 139 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/handle_gethead.rs:35:20 [INFO] [stdout] | [INFO] [stdout] 35 | let head = req.method() == &http::Method::HEAD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `http::Method::HEAD` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_gethead.rs:36:34 [INFO] [stdout] | [INFO] [stdout] 36 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_gethead.rs:110:48 [INFO] [stdout] | [INFO] [stdout] 110 | if let Some(s) = conditional::if_match(&req, Some(&meta), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | if ranges.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ranges.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/handle_gethead.rs:146:20 [INFO] [stdout] | [INFO] [stdout] 146 | if let Err(_) = file.seek(std::io::SeekFrom::Start(ranges[0].start)).await { [INFO] [stdout] | -------^^^^^^------------------------------------------------------------- help: try: `if file.seek(std::io::SeekFrom::Start(ranges[0].start)).await.is_err()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | if ranges.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ranges.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `writeln!` [INFO] [stdout] --> src/handle_gethead.rs:229:33 [INFO] [stdout] | [INFO] [stdout] 229 | let _ = writeln!(hdrs, ""); [INFO] [stdout] | ^^^^^^^^^^^^^----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stdout] = note: `#[warn(clippy::writeln_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:237:28 [INFO] [stdout] | [INFO] [stdout] 237 | if buf.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_gethead.rs:262:30 [INFO] [stdout] | [INFO] [stdout] 262 | let path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:450:8 [INFO] [stdout] | [INFO] [stdout] 450 | if dpath_segs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `dpath_segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/handle_gethead.rs:451:9 [INFO] [stdout] | [INFO] [stdout] 451 | dpath.push_str("/"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `dpath.push('/')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/handle_gethead.rs:503:5 [INFO] [stdout] | [INFO] [stdout] 503 | / match headers.typed_get::>() { [INFO] [stdout] 504 | | Some(Authorization(basic)) => { [INFO] [stdout] 505 | | vars.insert("AUTH_TYPE".to_string(), "Basic".to_string()); [INFO] [stdout] 506 | | vars.insert("REMOTE_USER".to_string(), basic.username().to_string()); [INFO] [stdout] 507 | | }, [INFO] [stdout] 508 | | _ => {}, [INFO] [stdout] 509 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 503 ~ if let Some(Authorization(basic)) = headers.typed_get::>() { [INFO] [stdout] 504 + vars.insert("AUTH_TYPE".to_string(), "Basic".to_string()); [INFO] [stdout] 505 + vars.insert("REMOTE_USER".to_string(), basic.username().to_string()); [INFO] [stdout] 506 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> src/handle_gethead.rs:553:5 [INFO] [stdout] | [INFO] [stdout] 553 | / fn new(data: String) -> Box { [INFO] [stdout] 554 | | Box::new(HbsFile { [INFO] [stdout] 555 | | meta: HbsMeta { [INFO] [stdout] 556 | | mtime: SystemTime::now(), [INFO] [stdout] ... | [INFO] [stdout] 561 | | }) [INFO] [stdout] 562 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:566:17 [INFO] [stdout] | [INFO] [stdout] 566 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 566 - fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] 566 + fn metadata(&mut self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:570:19 [INFO] [stdout] | [INFO] [stdout] 570 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 570 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] 570 + fn read_bytes(&mut self, count: usize) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:581:13 [INFO] [stdout] | [INFO] [stdout] 581 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 581 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] 581 + fn seek(&mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:601:18 [INFO] [stdout] | [INFO] [stdout] 601 | fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 601 - fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] 601 + fn write_buf(&mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:605:20 [INFO] [stdout] | [INFO] [stdout] 605 | fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 605 - fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] 605 + fn write_bytes(&mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:609:14 [INFO] [stdout] | [INFO] [stdout] 609 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 609 - fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] 609 + fn flush(&mut self) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/handle_lock.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | if !shared.is_some() || !locktype { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `shared.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/handle_lock.rs:184:9 [INFO] [stdout] | [INFO] [stdout] 184 | return Ok(res); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 184 - return Ok(res); [INFO] [stdout] 184 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_lock.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 39 | if xmldata.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `xmldata.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:41:44 [INFO] [stdout] | [INFO] [stdout] 41 | let (_, tokens) = dav_if_match(&req, &self.fs, &self.ls, &path).await; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:48:39 [INFO] [stdout] | [INFO] [stdout] 48 | let timeout = get_timeout(&req, true, false); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:74:35 [INFO] [stdout] | [INFO] [stdout] 74 | if let Some(s) = if_match(&req, meta.as_ref(), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_lock.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 81 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 82 | | .headers() [INFO] [stdout] 83 | | .typed_get::() [INFO] [stdout] 84 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 84 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 84 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_lock.rs:84:32 [INFO] [stdout] | [INFO] [stdout] 84 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 84 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 84 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_lock.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 88 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 89 | | .headers() [INFO] [stdout] 90 | | .typed_get::() [INFO] [stdout] 91 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 91 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 91 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_lock.rs:91:32 [INFO] [stdout] | [INFO] [stdout] 91 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 91 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 91 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.find_map(..)` can be written more simply using `.map(..).next()` [INFO] [stdout] --> src/handle_lock.rs:110:56 [INFO] [stdout] | [INFO] [stdout] 110 | let name = elem.child_elems_iter().find_map(|e| Some(e.name.as_ref())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_find_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_find_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.find_map(..)` can be written more simply using `.map(..).next()` [INFO] [stdout] --> src/handle_lock.rs:118:56 [INFO] [stdout] | [INFO] [stdout] 118 | let name = elem.child_elems_iter().find_map(|e| Some(e.name.as_ref())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_find_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:140:35 [INFO] [stdout] | [INFO] [stdout] 140 | let timeout = get_timeout(&req, false, shared); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_lock.rs:141:25 [INFO] [stdout] | [INFO] [stdout] 141 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/handle_lock.rs:148:16 [INFO] [stdout] | [INFO] [stdout] 148 | if let None = meta { [INFO] [stdout] | -------^^^^------- help: try: `if meta.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/handle_lock.rs:172:16 [INFO] [stdout] | [INFO] [stdout] 172 | if let None = meta { [INFO] [stdout] | -------^^^^------- help: try: `if meta.is_none()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:203:34 [INFO] [stdout] | [INFO] [stdout] 203 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_lock.rs:218:45 [INFO] [stdout] | [INFO] [stdout] 218 | pub(crate) fn list_lockdiscovery(ls: Option<&Box>, path: &DavPath) -> Element { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavLockSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_lock.rs:235:45 [INFO] [stdout] | [INFO] [stdout] 235 | pub(crate) fn list_supportedlock(ls: Option<&Box>) -> Element { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavLockSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_lock.rs:268:47 [INFO] [stdout] | [INFO] [stdout] 268 | Some(davheaders::Timeout(ref vec)) if vec.len() > 0 => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!vec.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_mkcol.rs:12:34 [INFO] [stdout] | [INFO] [stdout] 12 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_mkcol.rs:16:39 [INFO] [stdout] | [INFO] [stdout] 16 | let res = if_match_get_tokens(&req, meta.as_ref().ok(), &self.fs, &self.ls, &path).await; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_mkcol.rs:25:29 [INFO] [stdout] | [INFO] [stdout] 25 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_options.rs:37:30 [INFO] [stdout] | [INFO] [stdout] 37 | let path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/handle_options.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | let is_file = meta.and_then(|m| Ok(m.is_file())).unwrap_or_default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `meta.map(|m| m.is_file())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:121:29 [INFO] [stdout] | [INFO] [stdout] 121 | e.namespace = match e.prefix.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `e.prefix.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Depth` which implements the `Copy` trait [INFO] [stdout] --> src/handle_props.rs:159:24 [INFO] [stdout] | [INFO] [stdout] 159 | Some(d) => d.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `d` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:163:34 [INFO] [stdout] | [INFO] [stdout] 163 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_props.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | if xmldata.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!xmldata.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:171:48 [INFO] [stdout] | [INFO] [stdout] 171 | if t.name == "propfind" && t.namespace.as_ref().map(|s| s.as_str()) == Some("DAV:") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `t.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:174:36 [INFO] [stdout] | [INFO] [stdout] 174 | return Err(DavError::XmlParseError.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:177:38 [INFO] [stdout] | [INFO] [stdout] 177 | Err(_) => return Err(DavError::XmlParseError.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:196:45 [INFO] [stdout] | [INFO] [stdout] 196 | ... _ => return Err(DavError::XmlParseError.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:199:40 [INFO] [stdout] | [INFO] [stdout] 199 | None => return Err(DavError::XmlParseError.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:206:38 [INFO] [stdout] | [INFO] [stdout] 206 | let mut pw = PropWriter::new(&req, &mut res, name, props, &self.fs, self.ls.as_ref())?; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:280:15 [INFO] [stdout] | [INFO] [stdout] 280 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:357:15 [INFO] [stdout] | [INFO] [stdout] 357 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:384:34 [INFO] [stdout] | [INFO] [stdout] 384 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:389:48 [INFO] [stdout] | [INFO] [stdout] 389 | let tokens = match if_match_get_tokens(&req, Some(&meta), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:397:29 [INFO] [stdout] | [INFO] [stdout] 397 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:404:53 [INFO] [stdout] | [INFO] [stdout] 404 | std::string::String::from_utf8_lossy(&xmldata)); [INFO] [stdout] | ^^^^^^^^ help: change this to: `xmldata` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:427:49 [INFO] [stdout] | [INFO] [stdout] 427 | match self.liveprop_set(&n, can_deadprop) { [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:428:95 [INFO] [stdout] | [INFO] [stdout] 428 | ... StatusCode::CONTINUE => patch.push((true, element_to_davprop_full(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:429:66 [INFO] [stdout] | [INFO] [stdout] 429 | ... s => ret.push((s, element_to_davprop(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:433:52 [INFO] [stdout] | [INFO] [stdout] 433 | match self.liveprop_remove(&n, can_deadprop) { [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:434:91 [INFO] [stdout] | [INFO] [stdout] 434 | ... StatusCode::CONTINUE => patch.push((false, element_to_davprop(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:435:66 [INFO] [stdout] | [INFO] [stdout] 435 | ... s => ret.push((s, element_to_davprop(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/handle_props.rs:444:28 [INFO] [stdout] | [INFO] [stdout] 444 | if ret.iter().any(|&(ref s, _)| s != &StatusCode::OK) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 444 - if ret.iter().any(|&(ref s, _)| s != &StatusCode::OK) { [INFO] [stdout] 444 + if ret.iter().any(|(s, _)| s != &StatusCode::OK) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_props.rs:456:19 [INFO] [stdout] | [INFO] [stdout] 456 | } else if patch.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!patch.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/handle_props.rs:462:24 [INFO] [stdout] | [INFO] [stdout] 462 | ret.extend(deadret.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 462 - ret.extend(deadret.into_iter()); [INFO] [stdout] 462 + ret.extend(deadret); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/handle_props.rs:468:13 [INFO] [stdout] | [INFO] [stdout] 468 | / if !hm.contains_key(&code) { [INFO] [stdout] 469 | | hm.insert(code, Vec::new()); [INFO] [stdout] 470 | | } [INFO] [stdout] | |_____________^ help: try: `hm.entry(code).or_insert_with(|| Vec::new());` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:476:38 [INFO] [stdout] | [INFO] [stdout] 476 | let mut pw = PropWriter::new(&req, &mut res, "propertyupdate", Vec::new(), &self.fs, None)?; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_props.rs:496:13 [INFO] [stdout] | [INFO] [stdout] 496 | fs: &Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavFileSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_props.rs:497:20 [INFO] [stdout] | [INFO] [stdout] 497 | ls: Option<&Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavLockSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:554:23 [INFO] [stdout] | [INFO] [stdout] 554 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/handle_props.rs:575:24 [INFO] [stdout] | [INFO] [stdout] 575 | ls: ls.map(|ls| ls.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `ls.cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/handle_props.rs:597:16 [INFO] [stdout] | [INFO] [stdout] 597 | if t != "" { [INFO] [stdout] | ^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!t.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/handle_props.rs:641:21 [INFO] [stdout] | [INFO] [stdout] 641 | let avail = match qc.q_total { [INFO] [stdout] | _____________________^ [INFO] [stdout] 642 | | None => None, [INFO] [stdout] 643 | | Some(total) => Some(if total > used { total - used } else { 0 }), [INFO] [stdout] 644 | | }; [INFO] [stdout] | |_________^ help: try: `qc.q_total.map(|total| if total > used { total - used } else { 0 })` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/handle_props.rs:643:33 [INFO] [stdout] | [INFO] [stdout] 643 | Some(total) => Some(if total > used { total - used } else { 0 }), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `total.saturating_sub(used)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:662:15 [INFO] [stdout] | [INFO] [stdout] 662 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/handle_props.rs:692:25 [INFO] [stdout] | [INFO] [stdout] 692 | / if !meta.is_dir() { [INFO] [stdout] 693 | | return self.build_elem(docontent, pfx, prop, meta.len().to_string()); [INFO] [stdout] 694 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 691 ~ "getcontentlength" [INFO] [stdout] 692 ~ if !meta.is_dir() => { [INFO] [stdout] 693 | return self.build_elem(docontent, pfx, prop, meta.len().to_string()); [INFO] [stdout] 694 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:734:70 [INFO] [stdout] | [INFO] [stdout] 734 | if let Ok((_, Some(avail))) = self.get_quota(&mut qc, path, meta).await { [INFO] [stdout] | ^^^^^^^ help: change this to: `qc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:740:63 [INFO] [stdout] | [INFO] [stdout] 740 | if let Ok((used, _)) = self.get_quota(&mut qc, path, meta).await { [INFO] [stdout] | ^^^^^^^ help: change this to: `qc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/handle_props.rs:756:17 [INFO] [stdout] | [INFO] [stdout] 756 | / match prop.name.as_str() { [INFO] [stdout] 757 | | "executable" => { [INFO] [stdout] 758 | | if let Ok(x) = meta.executable() { [INFO] [stdout] 759 | | let b = if x { "T" } else { "F" }; [INFO] [stdout] ... | [INFO] [stdout] 763 | | _ => {}, [INFO] [stdout] 764 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 756 ~ if prop.name.as_str() == "executable" { [INFO] [stdout] 757 + if let Ok(x) = meta.executable() { [INFO] [stdout] 758 + let b = if x { "T" } else { "F" }; [INFO] [stdout] 759 + return self.build_elem(docontent, pfx, prop, b); [INFO] [stdout] 760 + } [INFO] [stdout] 761 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/handle_props.rs:837:23 [INFO] [stdout] | [INFO] [stdout] 837 | let prop = if pfx != "" { [INFO] [stdout] | ^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!pfx.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/handle_props.rs:877:9 [INFO] [stdout] | [INFO] [stdout] 877 | Ok::<(), DavError>(self.write_propresponse(path, props)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 877 - Ok::<(), DavError>(self.write_propresponse(path, props)?) [INFO] [stdout] 877 + self.write_propresponse(path, props) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `bytes::Bytes` [INFO] [stdout] --> src/handle_props.rs:913:40 [INFO] [stdout] | [INFO] [stdout] 913 | self.tx.as_mut().unwrap().send(Bytes::from(buffer)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `Bytes::from()`: `buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/handle_props.rs:924:5 [INFO] [stdout] | [INFO] [stdout] 924 | / if !hm.contains_key(&sc) { [INFO] [stdout] 925 | | hm.insert(sc, Vec::new()); [INFO] [stdout] 926 | | } [INFO] [stdout] | |_____^ help: try: `hm.entry(sc).or_insert_with(|| Vec::new());` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|p| p.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:957:19 [INFO] [stdout] | [INFO] [stdout] 957 | let pfx = prop.prefix.as_ref().map(|p| p.as_str()).unwrap_or(""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.prefix.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/handle_put.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | io::Error::new(io::ErrorKind::Other, err) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 53 - io::Error::new(io::ErrorKind::Other, err) [INFO] [stdout] 53 + io::Error::other(err) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_put.rs:81:30 [INFO] [stdout] | [INFO] [stdout] 81 | let path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/handle_put.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 89 | if req.method() == &http::Method::PATCH { [INFO] [stdout] | ^^^^^^^^^^^^^^^^-------------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `http::Method::PATCH` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_put.rs:90:17 [INFO] [stdout] | [INFO] [stdout] 90 | if !req [INFO] [stdout] | _________________^ [INFO] [stdout] 91 | | .headers() [INFO] [stdout] 92 | | .typed_get::() [INFO] [stdout] 93 | | .map_or(false, |ct| ct.0 == SABRE) [INFO] [stdout] | |__________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 93 - .map_or(false, |ct| ct.0 == SABRE) [INFO] [stdout] 93 + .is_some_and(|ct| ct.0 == SABRE) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_put.rs:156:42 [INFO] [stdout] | [INFO] [stdout] 156 | let tokens = if_match_get_tokens(&req, meta.as_ref().ok(), &self.fs, &self.ls, &path); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_put.rs:165:29 [INFO] [stdout] | [INFO] [stdout] 165 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_put.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 172 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 173 | | .headers() [INFO] [stdout] 174 | | .typed_get::() [INFO] [stdout] 175 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 175 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 175 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_put.rs:175:32 [INFO] [stdout] | [INFO] [stdout] 175 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 175 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 175 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_put.rs:179:12 [INFO] [stdout] | [INFO] [stdout] 179 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 180 | | .headers() [INFO] [stdout] 181 | | .typed_get::() [INFO] [stdout] 182 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 182 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 182 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_put.rs:182:32 [INFO] [stdout] | [INFO] [stdout] 182 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 182 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 182 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/handle_put.rs:202:20 [INFO] [stdout] | [INFO] [stdout] 202 | if let Err(_) = file.seek(std::io::SeekFrom::Start(start)).await { [INFO] [stdout] | -------^^^^^^--------------------------------------------------- help: try: `if file.seek(std::io::SeekFrom::Start(start)).await.is_err()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/localfs_windows.rs:28:23 [INFO] [stdout] | [INFO] [stdout] 28 | pub(crate) fn resolve<'a>(base: impl Into, path: &DavPath) -> PathBuf { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/localfs_windows.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | fullpath.push(&path); [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/localfs_windows.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | let cache = &*(&*CACHE); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 46 - let cache = &*(&*CACHE); [INFO] [stdout] 46 + let cache = (&*CACHE); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 46 | let cache = &**(&*CACHE); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: immediately dereferencing a reference [INFO] [stdout] --> src/localfs_windows.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | let cache = &*(&*CACHE); [INFO] [stdout] | ^^^^^^^^^^ help: try: `*CACHE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stdout] = note: `#[warn(clippy::deref_addrof)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/localfs_windows.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | if segs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/localfs_windows.rs:150:23 [INFO] [stdout] | [INFO] [stdout] 150 | path.push(&name); [INFO] [stdout] | ^^^^^ help: change this to: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/multierror.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | if text.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!text.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/multierror.rs:55:16 [INFO] [stdout] | [INFO] [stdout] 55 | write_elem(&mut w, "D:href", &p)?; [INFO] [stdout] | ^^^^^^ help: change this to: `w` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/multierror.rs:56:16 [INFO] [stdout] | [INFO] [stdout] 56 | write_elem(&mut w, "D:status", &format!("HTTP/1.1 {}", sc))?; [INFO] [stdout] | ^^^^^^ help: change this to: `w` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | if n.children.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!n.children.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree.rs:175:34 [INFO] [stdout] | [INFO] [stdout] 175 | if !overwrite || cnode.children.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!cnode.children.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/util.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | let m = match m { [INFO] [stdout] | _____________^ [INFO] [stdout] 34 | | &http::Method::HEAD => DavMethod::Head, [INFO] [stdout] 35 | | &http::Method::GET => DavMethod::Get, [INFO] [stdout] 36 | | &http::Method::PUT => DavMethod::Put, [INFO] [stdout] ... | [INFO] [stdout] 53 | | }, [INFO] [stdout] 54 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 33 ~ let m = match *m { [INFO] [stdout] 34 ~ http::Method::HEAD => DavMethod::Head, [INFO] [stdout] 35 ~ http::Method::GET => DavMethod::Get, [INFO] [stdout] 36 ~ http::Method::PUT => DavMethod::Put, [INFO] [stdout] 37 ~ http::Method::PATCH => DavMethod::Patch, [INFO] [stdout] 38 ~ http::Method::DELETE => DavMethod::Delete, [INFO] [stdout] 39 ~ http::Method::OPTIONS => DavMethod::Options, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/util.rs:183:19 [INFO] [stdout] | [INFO] [stdout] 183 | let buf = std::mem::replace(self.0.get_mut(), Vec::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(self.0.get_mut())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/xmltree_ext.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | fn text<'a, T: Into>(self, t: T) -> Self; [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/body.rs:41:74 [INFO] [stdout] | [INFO] [stdout] 41 | BodyType::Bytes(ref mut strm) => Poll::Ready(strm.take().map(|b| Ok(b))), [INFO] [stdout] | ^^^^^^^^^ help: replace the closure with the tuple variant itself: `Ok` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:35:26 [INFO] [stdout] | [INFO] [stdout] 35 | let unreserved = (byte >= b'A' && byte <= b'Z') || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | (byte >= b'a' && byte <= b'z') || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | (byte >= b'0' && byte <= b'9') || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'0'..=b'9').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:118:27 [INFO] [stdout] | [INFO] [stdout] 118 | if rp.iter().any(|&x| x < 32 || x > 126) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use: `!(32..=126).contains(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/davpath.rs:137:17 [INFO] [stdout] | [INFO] [stdout] 137 | let isdir = match rawpath.last() { [INFO] [stdout] | _________________^ [INFO] [stdout] 138 | | Some(x) if *x == b'/' => true, [INFO] [stdout] 139 | | _ => false, [INFO] [stdout] 140 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 137 - let isdir = match rawpath.last() { [INFO] [stdout] 138 - Some(x) if *x == b'/' => true, [INFO] [stdout] 139 - _ => false, [INFO] [stdout] 140 - }; [INFO] [stdout] 137 + let isdir = matches!(rawpath.last(), Some(x) if *x == b'/'); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:276:12 [INFO] [stdout] | [INFO] [stdout] 276 | if self.get_prefix().len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.get_prefix().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:301:25 [INFO] [stdout] | [INFO] [stdout] 301 | .filter(|e| e.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!e.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:304:12 [INFO] [stdout] | [INFO] [stdout] 304 | if segs.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:375:27 [INFO] [stdout] | [INFO] [stdout] 375 | let mut path = if spath.len() > 0 { &spath[1..] } else { spath }; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!spath.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:406:25 [INFO] [stdout] | [INFO] [stdout] 406 | .filter(|e| e.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!e.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:408:12 [INFO] [stdout] | [INFO] [stdout] 408 | if segs.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:231:18 [INFO] [stdout] | [INFO] [stdout] 231 | fn get_quota<'a>(&'a self) -> FsFuture<(u64, Option)> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 231 - fn get_quota<'a>(&'a self) -> FsFuture<(u64, Option)> { [INFO] [stdout] 231 + fn get_quota(&self) -> FsFuture<(u64, Option)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:263:17 [INFO] [stdout] | [INFO] [stdout] 263 | fn metadata<'a>(&'a self) -> FsFuture>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 263 - fn metadata<'a>(&'a self) -> FsFuture>; [INFO] [stdout] 263 + fn metadata(&self) -> FsFuture>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:269:15 [INFO] [stdout] | [INFO] [stdout] 269 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 269 - fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] 269 + fn is_dir(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:274:16 [INFO] [stdout] | [INFO] [stdout] 274 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 274 - fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] 274 + fn is_file(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:279:19 [INFO] [stdout] | [INFO] [stdout] 279 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 279 - fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] 279 + fn is_symlink(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | fn metadata<'a>(&'a mut self) -> FsFuture>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 287 - fn metadata<'a>(&'a mut self) -> FsFuture>; [INFO] [stdout] 287 + fn metadata(&mut self) -> FsFuture>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:288:18 [INFO] [stdout] | [INFO] [stdout] 288 | fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 288 - fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] 288 + fn write_buf(&mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:289:20 [INFO] [stdout] | [INFO] [stdout] 289 | fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 289 - fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] 289 + fn write_bytes(&mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:290:19 [INFO] [stdout] | [INFO] [stdout] 290 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 290 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture; [INFO] [stdout] 290 + fn read_bytes(&mut self, count: usize) -> FsFuture; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:291:13 [INFO] [stdout] | [INFO] [stdout] 291 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 291 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] 291 + fn seek(&mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:292:14 [INFO] [stdout] | [INFO] [stdout] 292 | fn flush<'a>(&'a mut self) -> FsFuture<()>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 292 - fn flush<'a>(&'a mut self) -> FsFuture<()>; [INFO] [stdout] 292 + fn flush(&mut self) -> FsFuture<()>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `DavMetaData` has a `len` method but no (possibly inherited) `is_empty` method [INFO] [stdout] --> src/fs.rs:296:1 [INFO] [stdout] | [INFO] [stdout] 296 | / pub trait DavMetaData: Debug + BoxCloneMd + Send + Sync { [INFO] [stdout] 297 | | /// Size of the file. [INFO] [stdout] 298 | | fn len(&self) -> u64; [INFO] [stdout] 299 | | /// `Modified` timestamp. [INFO] [stdout] ... | [INFO] [stdout] 352 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/localfs.rs:206:66 [INFO] [stdout] | [INFO] [stdout] 206 | crate::localfs_windows::resolve(&self.inner.basedir, &path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/localfs.rs:498:6 [INFO] [stdout] | [INFO] [stdout] 498 | impl<'a> Stream for LocalFsReadDir { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/localfs.rs:505:12 [INFO] [stdout] | [INFO] [stdout] 505 | if this.buffer.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `this.buffer.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/localfs.rs:521:25 [INFO] [stdout] | [INFO] [stdout] 521 | / for e in &batch.buffer { [INFO] [stdout] 522 | | if let Ok(ref e) = e { [INFO] [stdout] 523 | | nb.add(e.entry.file_name()); [INFO] [stdout] 524 | | } [INFO] [stdout] 525 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/localfs.rs:522:29 [INFO] [stdout] | [INFO] [stdout] 522 | / ... if let Ok(ref e) = e { [INFO] [stdout] 523 | | ... nb.add(e.entry.file_name()); [INFO] [stdout] 524 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 521 ~ for ref e in batch.buffer.iter().flatten() { [INFO] [stdout] 522 + nb.add(e.entry.file_name()); [INFO] [stdout] 523 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:585:17 [INFO] [stdout] | [INFO] [stdout] 585 | fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 585 - fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] 585 + fn metadata(&self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:611:15 [INFO] [stdout] | [INFO] [stdout] 611 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 611 - fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] 611 + fn is_dir(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:615:16 [INFO] [stdout] | [INFO] [stdout] 615 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 615 - fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] 615 + fn is_file(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:619:19 [INFO] [stdout] | [INFO] [stdout] 619 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 619 - fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] 619 + fn is_symlink(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:625:17 [INFO] [stdout] | [INFO] [stdout] 625 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 625 - fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] 625 + fn metadata(&mut self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:635:20 [INFO] [stdout] | [INFO] [stdout] 635 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 635 - fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] 635 + fn write_bytes(&mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:645:18 [INFO] [stdout] | [INFO] [stdout] 645 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 645 - fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] 645 + fn write_buf(&mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:665:19 [INFO] [stdout] | [INFO] [stdout] 665 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 665 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] 665 + fn read_bytes(&mut self, count: usize) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:686:13 [INFO] [stdout] | [INFO] [stdout] 686 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 686 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] 686 + fn seek(&mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:696:14 [INFO] [stdout] | [INFO] [stdout] 696 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 696 - fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] 696 + fn flush(&mut self) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/ls.rs:48:10 [INFO] [stdout] | [INFO] [stdout] 48 | ) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/ls.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | fn unlock(&self, path: &DavPath, token: &str) -> Result<(), ()>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/ls.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | fn refresh(&self, path: &DavPath, token: &str, timeout: Option) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/ls.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | ) -> Result<(), DavLock>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/ls.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | fn delete(&self, path: &DavPath) -> Result<(), ()>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/memfs.rs:151:46 [INFO] [stdout] | [INFO] [stdout] 151 | let strm = futures::stream::iter(v.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.15/src/stream/iter.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | I: IntoIterator, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 151 - let strm = futures::stream::iter(v.into_iter()); [INFO] [stdout] 151 + let strm = futures::stream::iter(v); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to move all elements into a new `Vec` [INFO] [stdout] --> src/memfs.rs:262:25 [INFO] [stdout] | [INFO] [stdout] 262 | let patch = patch.drain(..).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `mem::take`: `std::mem::take(&mut patch)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drain_collect [INFO] [stdout] = note: `#[warn(clippy::drain_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/memfs.rs:289:27 [INFO] [stdout] | [INFO] [stdout] 289 | for (_, p) in node.get_props() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 289 - for (_, p) in node.get_props() { [INFO] [stdout] 289 + for p in node.get_props().values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/memfs.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 306 | Ok(p.xml.clone().ok_or(FsError::NotFound)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 306 - Ok(p.xml.clone().ok_or(FsError::NotFound)?) [INFO] [stdout] 306 + p.xml.clone().ok_or(FsError::NotFound) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:328:17 [INFO] [stdout] | [INFO] [stdout] 328 | fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 328 - fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] 328 + fn metadata(&self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:339:17 [INFO] [stdout] | [INFO] [stdout] 339 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 339 - fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] 339 + fn metadata(&mut self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:349:19 [INFO] [stdout] | [INFO] [stdout] 349 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 349 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] 349 + fn read_bytes(&mut self, count: usize) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:370:20 [INFO] [stdout] | [INFO] [stdout] 370 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 370 - fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] 370 + fn write_bytes(&mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:389:18 [INFO] [stdout] | [INFO] [stdout] 389 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 389 - fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] 389 + fn write_buf(&mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:413:14 [INFO] [stdout] | [INFO] [stdout] 413 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 413 - fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] 413 + fn flush(&mut self) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 417 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] 417 + fn seek(&mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:484:45 [INFO] [stdout] | [INFO] [stdout] 484 | let (is_dir, size, mtime, crtime) = match self { [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 485 | | &MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] 486 | | &MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] 487 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 484 ~ let (is_dir, size, mtime, crtime) = match *self { [INFO] [stdout] 485 ~ MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] 486 ~ MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:485:13 [INFO] [stdout] | [INFO] [stdout] 485 | &MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 485 - &MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] 485 + MemFsNode::File(file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:486:13 [INFO] [stdout] | [INFO] [stdout] 486 | &MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 486 - &MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] 486 + MemFsNode::Dir(dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/memfs.rs:493:21 [INFO] [stdout] | [INFO] [stdout] 493 | size: size as u64, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:498:9 [INFO] [stdout] | [INFO] [stdout] 498 | / match self { [INFO] [stdout] 499 | | &mut MemFsNode::Dir(ref mut d) => d.mtime = tm, [INFO] [stdout] 500 | | &mut MemFsNode::File(ref mut f) => f.mtime = tm, [INFO] [stdout] 501 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 498 ~ match *self { [INFO] [stdout] 499 ~ MemFsNode::Dir(ref mut d) => d.mtime = tm, [INFO] [stdout] 500 ~ MemFsNode::File(ref mut f) => f.mtime = tm, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:505:9 [INFO] [stdout] | [INFO] [stdout] 505 | / match self { [INFO] [stdout] 506 | | &MemFsNode::Dir(_) => true, [INFO] [stdout] 507 | | &MemFsNode::File(_) => false, [INFO] [stdout] 508 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 505 ~ match *self { [INFO] [stdout] 506 ~ MemFsNode::Dir(_) => true, [INFO] [stdout] 507 ~ MemFsNode::File(_) => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:513:13 [INFO] [stdout] | [INFO] [stdout] 513 | &MemFsNode::File(ref n) => Ok(n), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 513 - &MemFsNode::File(ref n) => Ok(n), [INFO] [stdout] 513 + MemFsNode::File(n) => Ok(n), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:526:9 [INFO] [stdout] | [INFO] [stdout] 526 | / match self { [INFO] [stdout] 527 | | &MemFsNode::File(ref n) => &n.props, [INFO] [stdout] 528 | | &MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] 529 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 526 ~ match *self { [INFO] [stdout] 527 ~ MemFsNode::File(ref n) => &n.props, [INFO] [stdout] 528 ~ MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:527:13 [INFO] [stdout] | [INFO] [stdout] 527 | &MemFsNode::File(ref n) => &n.props, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 527 - &MemFsNode::File(ref n) => &n.props, [INFO] [stdout] 527 + MemFsNode::File(n) => &n.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:528:13 [INFO] [stdout] | [INFO] [stdout] 528 | &MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 528 - &MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] 528 + MemFsNode::Dir(d) => &d.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:533:9 [INFO] [stdout] | [INFO] [stdout] 533 | / match self { [INFO] [stdout] 534 | | &mut MemFsNode::File(ref mut n) => &mut n.props, [INFO] [stdout] 535 | | &mut MemFsNode::Dir(ref mut d) => &mut d.props, [INFO] [stdout] 536 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 533 ~ match *self { [INFO] [stdout] 534 ~ MemFsNode::File(ref mut n) => &mut n.props, [INFO] [stdout] 535 ~ MemFsNode::Dir(ref mut d) => &mut d.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memfs.rs:564:64 [INFO] [stdout] | [INFO] [stdout] 564 | self.lookup_segs(path.split(|&c| c == b'/').filter(|s| s.len() > 0).collect()) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memfs.rs:570:74 [INFO] [stdout] | [INFO] [stdout] 570 | let mut segs: Vec<&[u8]> = path.split(|&c| c == b'/').filter(|s| s.len() > 0).collect(); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/memfs.rs:582:5 [INFO] [stdout] | [INFO] [stdout] 582 | / path.split(|&c| c == b'/') [INFO] [stdout] 583 | | .filter(|s| s.len() > 0) [INFO] [stdout] 584 | | .last() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 584 - .last() [INFO] [stdout] 584 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memfs.rs:583:21 [INFO] [stdout] | [INFO] [stdout] 583 | .filter(|s| s.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/memls.rs:71:26 [INFO] [stdout] | [INFO] [stdout] 71 | let timeout_at = match timeout { [INFO] [stdout] | __________________________^ [INFO] [stdout] 72 | | None => None, [INFO] [stdout] 73 | | Some(d) => Some(SystemTime::now() + d), [INFO] [stdout] 74 | | }; [INFO] [stdout] | |_________^ help: try: `timeout.map(|d| SystemTime::now() + d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/memls.rs:122:20 [INFO] [stdout] | [INFO] [stdout] 122 | let node = (&mut inner.tree).get_node_mut(node_id).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `inner.tree` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/memls.rs:125:26 [INFO] [stdout] | [INFO] [stdout] 125 | let timeout_at = match timeout { [INFO] [stdout] | __________________________^ [INFO] [stdout] 126 | | None => None, [INFO] [stdout] 127 | | Some(d) => Some(SystemTime::now() + d), [INFO] [stdout] 128 | | }; [INFO] [stdout] | |_________^ help: try: `timeout.map(|d| SystemTime::now() + d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/memls.rs:180:13 [INFO] [stdout] | [INFO] [stdout] 180 | (&mut inner.tree).delete_subtree(node_id).ok(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `inner.tree` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/memls.rs:194:6 [INFO] [stdout] | [INFO] [stdout] 194 | ) -> Result<(), DavLock> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `first_lock_seen` after checking its variant with `is_some` [INFO] [stdout] --> src/memls.rs:240:20 [INFO] [stdout] | [INFO] [stdout] 239 | if !holds_lock && first_lock_seen.is_some() { [INFO] [stdout] | ------------------------- the check is happening here [INFO] [stdout] 240 | return Err(first_lock_seen.unwrap().to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|p| p.as_str())` on an `Option` value [INFO] [stdout] --> src/memls.rs:221:51 [INFO] [stdout] | [INFO] [stdout] 221 | (ignore_principal || principal == nl.principal.as_ref().map(|p| p.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `nl.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/memls.rs:254:6 [INFO] [stdout] | [INFO] [stdout] 254 | ) -> Result<(), DavLock> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/memls.rs:278:6 [INFO] [stdout] | [INFO] [stdout] 278 | ) -> Result<(), DavLock> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/memls.rs:285:9 [INFO] [stdout] | [INFO] [stdout] 285 | / if !nl.shared || !shared_ok { [INFO] [stdout] 286 | | if !submitted_tokens.iter().any(|t| t == &nl.token) || [INFO] [stdout] 287 | | (!ignore_principal && principal != nl.principal.as_ref().map(|p| p.as_str())) [INFO] [stdout] ... | [INFO] [stdout] 291 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 285 ~ if (!nl.shared || !shared_ok) { [INFO] [stdout] 286 ~ && (!submitted_tokens.iter().any(|t| t == &nl.token) || [INFO] [stdout] 287 ~ (!ignore_principal && principal != nl.principal.as_ref().map(|p| p.as_str()))) [INFO] [stdout] 288 | { [INFO] [stdout] 289 | return Err(nl.to_owned()); [INFO] [stdout] 290 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|p| p.as_str())` on an `Option` value [INFO] [stdout] --> src/memls.rs:287:52 [INFO] [stdout] | [INFO] [stdout] 287 | (!ignore_principal && principal != nl.principal.as_ref().map(|p| p.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `nl.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/memls.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | / if let Err(l) = check_locks_from_node( [INFO] [stdout] 296 | | tree, [INFO] [stdout] 297 | | node_id, [INFO] [stdout] 298 | | principal, [INFO] [stdout] ... | [INFO] [stdout] 303 | | return Err(l); [INFO] [stdout] 304 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] help: replace it with [INFO] [stdout] | [INFO] [stdout] 295 ~ check_locks_from_node( [INFO] [stdout] 296 + tree, [INFO] [stdout] 297 + node_id, [INFO] [stdout] 298 + principal, [INFO] [stdout] 299 + ignore_principal, [INFO] [stdout] 300 + submitted_tokens, [INFO] [stdout] 301 + shared_ok, [INFO] [stdout] 302 + )? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memls.rs:381:70 [INFO] [stdout] | [INFO] [stdout] 381 | let mut segs: Vec<&[u8]> = path.split(|&c| c == b'/').filter(|s| s.len() > 0).collect(); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memls.rs:389:8 [INFO] [stdout] | [INFO] [stdout] 389 | if seg.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `seg.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:566:38 [INFO] [stdout] | [INFO] [stdout] 566 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 566 | fn metadata<'a>(&'a mut self) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:570:54 [INFO] [stdout] | [INFO] [stdout] 570 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 570 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture<'a, Bytes> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:581:49 [INFO] [stdout] | [INFO] [stdout] 581 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 581 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture<'a, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:601:73 [INFO] [stdout] | [INFO] [stdout] 601 | fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 601 | fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:605:61 [INFO] [stdout] | [INFO] [stdout] 605 | fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 605 | fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:609:35 [INFO] [stdout] | [INFO] [stdout] 609 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 609 | fn flush<'a>(&'a mut self) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/voidfs.rs:23:54 [INFO] [stdout] | [INFO] [stdout] 23 | fn metadata<'a>(&'a self, _path: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 23 | fn metadata<'a>(&'a self, _path: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/voidfs.rs:31:10 [INFO] [stdout] | [INFO] [stdout] 28 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 29 | _path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 30 | _meta: ReadDirMeta, [INFO] [stdout] 31 | ) -> FsFuture>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 31 | ) -> FsFuture<'a, FsStream>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/voidfs.rs:36:73 [INFO] [stdout] | [INFO] [stdout] 36 | fn open<'a>(&'a self, _path: &'a DavPath, _options: OpenOptions) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 36 | fn open<'a>(&'a self, _path: &'a DavPath, _options: OpenOptions) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:96:71 [INFO] [stdout] | [INFO] [stdout] 96 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture>; [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 96 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:103:10 [INFO] [stdout] | [INFO] [stdout] 100 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 101 | path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 102 | meta: ReadDirMeta, [INFO] [stdout] 103 | ) -> FsFuture>>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 103 | ) -> FsFuture<'a, FsStream>>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:106:53 [INFO] [stdout] | [INFO] [stdout] 106 | fn metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture>; [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 106 | fn metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:116:61 [INFO] [stdout] | [INFO] [stdout] 116 | fn symlink_metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 116 | fn symlink_metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:124:55 [INFO] [stdout] | [INFO] [stdout] 124 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 124 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:132:55 [INFO] [stdout] | [INFO] [stdout] 132 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 132 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:140:56 [INFO] [stdout] | [INFO] [stdout] 140 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 140 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:153:68 [INFO] [stdout] | [INFO] [stdout] 153 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 153 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:164:66 [INFO] [stdout] | [INFO] [stdout] 164 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 164 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:173:73 [INFO] [stdout] | [INFO] [stdout] 173 | fn set_accessed<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<()> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 173 | fn set_accessed<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:182:73 [INFO] [stdout] | [INFO] [stdout] 182 | fn set_modified<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<()> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 182 | fn set_modified<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:202:10 [INFO] [stdout] | [INFO] [stdout] 199 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 200 | path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 201 | patch: Vec<(bool, DavProp)>, [INFO] [stdout] 202 | ) -> FsFuture> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 202 | ) -> FsFuture<'a, Vec<(StatusCode, DavProp)>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:211:72 [INFO] [stdout] | [INFO] [stdout] 211 | fn get_props<'a>(&'a self, path: &'a DavPath, do_content: bool) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 211 | fn get_props<'a>(&'a self, path: &'a DavPath, do_content: bool) -> FsFuture<'a, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:219:68 [INFO] [stdout] | [INFO] [stdout] 219 | fn get_prop<'a>(&'a self, path: &'a DavPath, prop: DavProp) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 219 | fn get_prop<'a>(&'a self, path: &'a DavPath, prop: DavProp) -> FsFuture<'a, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:231:35 [INFO] [stdout] | [INFO] [stdout] 231 | fn get_quota<'a>(&'a self) -> FsFuture<(u64, Option)> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 231 | fn get_quota<'a>(&'a self) -> FsFuture<'a, (u64, Option)> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:263:34 [INFO] [stdout] | [INFO] [stdout] 263 | fn metadata<'a>(&'a self) -> FsFuture>; [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 263 | fn metadata<'a>(&'a self) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:269:32 [INFO] [stdout] | [INFO] [stdout] 269 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 269 | fn is_dir<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:274:33 [INFO] [stdout] | [INFO] [stdout] 274 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 274 | fn is_file<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:279:36 [INFO] [stdout] | [INFO] [stdout] 279 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 279 | fn is_symlink<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:287:38 [INFO] [stdout] | [INFO] [stdout] 287 | fn metadata<'a>(&'a mut self) -> FsFuture>; [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 287 | fn metadata<'a>(&'a mut self) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:288:72 [INFO] [stdout] | [INFO] [stdout] 288 | fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 288 | fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<'a, ()>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:289:60 [INFO] [stdout] | [INFO] [stdout] 289 | fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 289 | fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<'a, ()>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:290:54 [INFO] [stdout] | [INFO] [stdout] 290 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 290 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture<'a, bytes::Bytes>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:291:49 [INFO] [stdout] | [INFO] [stdout] 291 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 291 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture<'a, u64>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:292:35 [INFO] [stdout] | [INFO] [stdout] 292 | fn flush<'a>(&'a mut self) -> FsFuture<()>; [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 292 | fn flush<'a>(&'a mut self) -> FsFuture<'a, ()>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:235:56 [INFO] [stdout] | [INFO] [stdout] 235 | fn metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 235 | fn metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:255:64 [INFO] [stdout] | [INFO] [stdout] 255 | fn symlink_metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 255 | fn symlink_metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:281:10 [INFO] [stdout] | [INFO] [stdout] 278 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 279 | davpath: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 280 | meta: ReadDirMeta, [INFO] [stdout] 281 | ) -> FsFuture>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 281 | ) -> FsFuture<'a, FsStream>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:306:71 [INFO] [stdout] | [INFO] [stdout] 306 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 306 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:334:55 [INFO] [stdout] | [INFO] [stdout] 334 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 334 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:353:55 [INFO] [stdout] | [INFO] [stdout] 353 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 353 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:363:56 [INFO] [stdout] | [INFO] [stdout] 363 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 363 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:376:68 [INFO] [stdout] | [INFO] [stdout] 376 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 376 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:406:66 [INFO] [stdout] | [INFO] [stdout] 406 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 406 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:585:34 [INFO] [stdout] | [INFO] [stdout] 585 | fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 585 | fn metadata<'a>(&'a self) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:611:32 [INFO] [stdout] | [INFO] [stdout] 611 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 611 | fn is_dir<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:615:33 [INFO] [stdout] | [INFO] [stdout] 615 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 615 | fn is_file<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:619:36 [INFO] [stdout] | [INFO] [stdout] 619 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 619 | fn is_symlink<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:625:38 [INFO] [stdout] | [INFO] [stdout] 625 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 625 | fn metadata<'a>(&'a mut self) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:635:53 [INFO] [stdout] | [INFO] [stdout] 635 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 635 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:645:69 [INFO] [stdout] | [INFO] [stdout] 645 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 645 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:665:54 [INFO] [stdout] | [INFO] [stdout] 665 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 665 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture<'a, Bytes> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:686:49 [INFO] [stdout] | [INFO] [stdout] 686 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 686 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture<'a, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:696:35 [INFO] [stdout] | [INFO] [stdout] 696 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 696 | fn flush<'a>(&'a mut self) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:123:53 [INFO] [stdout] | [INFO] [stdout] 123 | fn metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 123 | fn metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:137:10 [INFO] [stdout] | [INFO] [stdout] 134 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 135 | path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 136 | _meta: ReadDirMeta, [INFO] [stdout] 137 | ) -> FsFuture>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 137 | ) -> FsFuture<'a, FsStream>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:157:71 [INFO] [stdout] | [INFO] [stdout] 157 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 157 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:165:55 [INFO] [stdout] | [INFO] [stdout] 165 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 165 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:178:56 [INFO] [stdout] | [INFO] [stdout] 178 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 178 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:190:55 [INFO] [stdout] | [INFO] [stdout] 190 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 190 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:202:68 [INFO] [stdout] | [INFO] [stdout] 202 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 202 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:216:66 [INFO] [stdout] | [INFO] [stdout] 216 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 216 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:252:10 [INFO] [stdout] | [INFO] [stdout] 249 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 250 | path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 251 | mut patch: Vec<(bool, DavProp)>, [INFO] [stdout] 252 | ) -> FsFuture> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 252 | ) -> FsFuture<'a, Vec<(StatusCode, DavProp)>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:283:72 [INFO] [stdout] | [INFO] [stdout] 283 | fn get_props<'a>(&'a self, path: &'a DavPath, do_content: bool) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 283 | fn get_props<'a>(&'a self, path: &'a DavPath, do_content: bool) -> FsFuture<'a, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:297:68 [INFO] [stdout] | [INFO] [stdout] 297 | fn get_prop<'a>(&'a self, path: &'a DavPath, prop: DavProp) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 297 | fn get_prop<'a>(&'a self, path: &'a DavPath, prop: DavProp) -> FsFuture<'a, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:328:34 [INFO] [stdout] | [INFO] [stdout] 328 | fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 328 | fn metadata<'a>(&'a self) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:339:38 [INFO] [stdout] | [INFO] [stdout] 339 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 339 | fn metadata<'a>(&'a mut self) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:349:54 [INFO] [stdout] | [INFO] [stdout] 349 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 349 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture<'a, Bytes> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:370:53 [INFO] [stdout] | [INFO] [stdout] 370 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 370 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:389:69 [INFO] [stdout] | [INFO] [stdout] 389 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 389 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:413:35 [INFO] [stdout] | [INFO] [stdout] 413 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 413 | fn flush<'a>(&'a mut self) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/memfs.rs:417:49 [INFO] [stdout] | [INFO] [stdout] 417 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 417 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture<'a, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking hyper v0.14.7 [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> examples/sample-litmus-server.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | use env_logger; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> examples/sample-litmus-server.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | use hyper; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/davheaders.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | use url; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/davheaders.rs:295:17 [INFO] [stdout] | [INFO] [stdout] 295 | weak: weak, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `weak` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/davheaders.rs:326:17 [INFO] [stdout] | [INFO] [stdout] 326 | weak: weak, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `weak` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/errors.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | use xml; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/handle_gethead.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | use htmlescape; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle_gethead.rs:314:29 [INFO] [stdout] | [INFO] [stdout] 314 | ... meta: meta, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | const NS_APACHE_URI: &'static str = "http://apache.org/dav/props/"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:32:20 [INFO] [stdout] | [INFO] [stdout] 32 | const NS_DAV_URI: &'static str = "DAV:"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | const NS_MS_URI: &'static str = "urn:schemas-microsoft-com:"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | const PROPNAME_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:36:32 [INFO] [stdout] | [INFO] [stdout] 36 | const PROPNAME_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:54:21 [INFO] [stdout] | [INFO] [stdout] 54 | const ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:54:31 [INFO] [stdout] | [INFO] [stdout] 54 | const ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:68:24 [INFO] [stdout] | [INFO] [stdout] 68 | const MS_ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_props.rs:68:34 [INFO] [stdout] | [INFO] [stdout] 68 | const MS_ALLPROP_STR: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle_props.rs:570:13 [INFO] [stdout] | [INFO] [stdout] 570 | emitter: emitter, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `emitter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle_props.rs:573:13 [INFO] [stdout] | [INFO] [stdout] 573 | props: props, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `props` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/handle_put.rs:17:15 [INFO] [stdout] | [INFO] [stdout] 17 | const SABRE: &'static str = "application/x-sabredav-partialupdate"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | dir: dir, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `dir` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | dir_modtime: dir_modtime, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_modtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | dir_id: dir_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:204:17 [INFO] [stdout] | [INFO] [stdout] 204 | dir_modtime: dir_modtime, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_modtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs_macos.rs:205:17 [INFO] [stdout] | [INFO] [stdout] 205 | dir_id: dir_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `dir_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/multierror.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | use xml; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/tree.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | id: id, [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/tree.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | data: data, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace it with: `data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/tree.rs:92:22 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn get_child(&self, parent: u64, key: &Q) -> FsResult [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 95 | Q: Hash + Eq, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/xmltree_ext.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | use xml; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | token: token, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | shared: shared, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | deep: deep, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `deep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:99:13 [INFO] [stdout] | [INFO] [stdout] 99 | shared: shared, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fakels.rs:100:13 [INFO] [stdout] | [INFO] [stdout] 100 | deep: deep, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `deep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:138:13 [INFO] [stdout] | [INFO] [stdout] 138 | public: public, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `public` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:139:13 [INFO] [stdout] | [INFO] [stdout] 139 | macos: macos, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `macos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | case_insensitive: case_insensitive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `case_insensitive` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:158:13 [INFO] [stdout] | [INFO] [stdout] 158 | public: public, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `public` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | public: public, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `public` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:184:13 [INFO] [stdout] | [INFO] [stdout] 184 | macos: macos, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `macos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:185:13 [INFO] [stdout] | [INFO] [stdout] 185 | case_insensitive: case_insensitive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `case_insensitive` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:187:13 [INFO] [stdout] | [INFO] [stdout] 187 | fs_access_guard: fs_access_guard, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fs_access_guard` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:464:21 [INFO] [stdout] | [INFO] [stdout] 464 | meta: meta, [INFO] [stdout] | ^^^^^^^^^^^ help: replace it with: `meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/localfs.rs:465:21 [INFO] [stdout] | [INFO] [stdout] 465 | entry: entry, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `entry` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:107:13 [INFO] [stdout] | [INFO] [stdout] 107 | node_id: node_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:490:13 [INFO] [stdout] | [INFO] [stdout] 490 | mtime: mtime, [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `mtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:491:13 [INFO] [stdout] | [INFO] [stdout] 491 | crtime: crtime, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `crtime` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memfs.rs:492:13 [INFO] [stdout] | [INFO] [stdout] 492 | is_dir: is_dir, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `is_dir` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | timeout_at: timeout_at, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeout_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | timeout: timeout, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeout` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 82 | shared: shared, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/memls.rs:83:13 [INFO] [stdout] | [INFO] [stdout] 83 | deep: deep, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `deep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> examples/sample-litmus-server.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | if directory != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!directory.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `id` is never read [INFO] [stdout] --> src/tree.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct Node { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 22 | pub data: D, [INFO] [stdout] 23 | id: u64, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `locks` is never read [INFO] [stdout] --> src/memls.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | struct MemLsInner { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 29 | tree: Tree, [INFO] [stdout] 30 | locks: HashMap, u64>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MemLsInner` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/async_stream.rs:113:11 [INFO] [stdout] | [INFO] [stdout] 113 | fut: Option> + 'static + Send>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/conditional.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | / match hdr { [INFO] [stdout] 30 | | &davheaders::IfRange::Date(ref d) => { [INFO] [stdout] 31 | | match date { [INFO] [stdout] 32 | | Some(date) => round_time(date) == round_time(*d), [INFO] [stdout] ... | [INFO] [stdout] 41 | | }, [INFO] [stdout] 42 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 29 ~ match *hdr { [INFO] [stdout] 30 ~ davheaders::IfRange::Date(ref d) => { [INFO] [stdout] 31 | match date { [INFO] [stdout] ... [INFO] [stdout] 35 | }, [INFO] [stdout] 36 ~ davheaders::IfRange::ETag(ref t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | &davheaders::IfRange::Date(ref d) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 30 - &davheaders::IfRange::Date(ref d) => { [INFO] [stdout] 30 + davheaders::IfRange::Date(d) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | &davheaders::IfRange::ETag(ref t) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 36 - &davheaders::IfRange::ETag(ref t) => { [INFO] [stdout] 36 + davheaders::IfRange::ETag(t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/conditional.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | / match tags { [INFO] [stdout] 52 | | &davheaders::ETagList::Star => exists, [INFO] [stdout] 53 | | &davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] 54 | | match tag { [INFO] [stdout] ... | [INFO] [stdout] 58 | | }, [INFO] [stdout] 59 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 51 ~ match *tags { [INFO] [stdout] 52 ~ davheaders::ETagList::Star => exists, [INFO] [stdout] 53 ~ davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | &davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 53 - &davheaders::ETagList::Tags(ref t) => { [INFO] [stdout] 53 + davheaders::ETagList::Tags(t) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:63:57 [INFO] [stdout] | [INFO] [stdout] 63 | pub(crate) fn http_if_match(req: &Request, meta: Option<&Box>) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavMetaData` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/conditional.rs:67:34 [INFO] [stdout] | [INFO] [stdout] 67 | let etag = meta.and_then(|m| ETag::from_meta(m)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ETag::from_meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/conditional.rs:85:34 [INFO] [stdout] | [INFO] [stdout] 85 | let etag = meta.and_then(|m| ETag::from_meta(m)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ETag::from_meta` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:88:16 [INFO] [stdout] | [INFO] [stdout] 88 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------ [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::GET` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:88:48 [INFO] [stdout] | [INFO] [stdout] 88 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::HEAD` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------ [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::GET` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/conditional.rs:95:44 [INFO] [stdout] | [INFO] [stdout] 95 | if req.method() == &Method::GET || req.method() == &Method::HEAD { [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `Method::HEAD` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | fs: &'a Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavFileSystem + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:134:17 [INFO] [stdout] | [INFO] [stdout] 134 | &davheaders::IfItem::StateToken(ref t) => Some(t.to_owned()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 134 - &davheaders::IfItem::StateToken(ref t) => Some(t.to_owned()), [INFO] [stdout] 134 + davheaders::IfItem::StateToken(t) => Some(t.to_owned()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/conditional.rs:141:12 [INFO] [stdout] | [INFO] [stdout] 141 | if any_list_ok == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `any_list_ok` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/conditional.rs:170:25 [INFO] [stdout] | [INFO] [stdout] 170 | / match ls { [INFO] [stdout] 171 | | &Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] 172 | | &None => false, [INFO] [stdout] 173 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 170 ~ match *ls { [INFO] [stdout] 171 ~ Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] 172 ~ None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/conditional.rs:171:29 [INFO] [stdout] | [INFO] [stdout] 171 | ... &Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 171 - &Some(ref ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] 171 + Some(ls) => ls.check(p, None, true, false, vec![s]).is_ok(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:217:18 [INFO] [stdout] | [INFO] [stdout] 217 | meta: Option<&'a Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavMetaData + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | fs: &'a Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavFileSystem + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:233:18 [INFO] [stdout] | [INFO] [stdout] 233 | meta: Option<&'a Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavMetaData + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/conditional.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | fs: &'a Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a (dyn DavFileSystem + 'static)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:133:41 [INFO] [stdout] | [INFO] [stdout] 133 | allow: new.allow.or(self.allow.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.allow` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:135:49 [INFO] [stdout] | [INFO] [stdout] 135 | hide_symlinks: new.hide_symlinks.or(self.hide_symlinks.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.hide_symlinks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:136:45 [INFO] [stdout] | [INFO] [stdout] 136 | autoindex: new.autoindex.or(self.autoindex.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.autoindex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:184:28 [INFO] [stdout] | [INFO] [stdout] 184 | hide_symlinks: cfg.hide_symlinks.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cfg.hide_symlinks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:185:28 [INFO] [stdout] | [INFO] [stdout] 185 | autoindex: cfg.autoindex.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cfg.autoindex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:197:28 [INFO] [stdout] | [INFO] [stdout] 197 | allow: self.allow.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.allow` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:199:28 [INFO] [stdout] | [INFO] [stdout] 199 | hide_symlinks: self.hide_symlinks.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.hide_symlinks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/davhandler.rs:200:28 [INFO] [stdout] | [INFO] [stdout] 200 | autoindex: self.autoindex.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.autoindex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DavHandler` [INFO] [stdout] --> src/davhandler.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | / pub fn new() -> DavHandler { [INFO] [stdout] 214 | | DavHandler { [INFO] [stdout] 215 | | config: Arc::new(DavConfig::default()), [INFO] [stdout] 216 | | } [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 206 + impl Default for DavHandler { [INFO] [stdout] 207 + fn default() -> Self { [INFO] [stdout] 208 + Self::new() [INFO] [stdout] 209 + } [INFO] [stdout] 210 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/davhandler.rs:327:38 [INFO] [stdout] | [INFO] [stdout] 327 | pub(crate) async fn read_request<'a, ReqBody, ReqData, ReqError>( [INFO] [stdout] | ^^ [INFO] [stdout] 328 | &'a self, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davhandler.rs:480:20 [INFO] [stdout] | [INFO] [stdout] 480 | if body_data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!body_data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/davheaders.rs:148:17 [INFO] [stdout] | [INFO] [stdout] 148 | let h = match headers::Vary::decode(values) { [INFO] [stdout] | _________________^ [INFO] [stdout] 149 | | Err(e) => return Err(e), [INFO] [stdout] 150 | | Ok(h) => h, [INFO] [stdout] 151 | | }; [INFO] [stdout] | |_________^ help: try instead: `headers::Vary::decode(values)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/davheaders.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | return Ok(Timeout(v)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 202 - return Ok(Timeout(v)); [INFO] [stdout] 202 + Ok(Timeout(v)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this manual char comparison can be written more succinctly [INFO] [stdout] --> src/davheaders.rs:187:64 [INFO] [stdout] | [INFO] [stdout] 187 | let words = value.to_str().map_err(map_invalid)?.split(|c| c == ','); [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using a `char`: `','` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_pattern_char_comparison [INFO] [stdout] = note: `#[warn(clippy::manual_pattern_char_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | / match s { [INFO] [stdout] 215 | | &DavTimeout::Seconds(n) => value.push_str(&format!("Second-{}", n)), [INFO] [stdout] 216 | | &DavTimeout::Infinite => value.push_str("Infinite"), [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 214 ~ match *s { [INFO] [stdout] 215 ~ DavTimeout::Seconds(n) => value.push_str(&format!("Second-{}", n)), [INFO] [stdout] 216 ~ DavTimeout::Infinite => value.push_str("Infinite"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/davheaders.rs:319:20 [INFO] [stdout] | [INFO] [stdout] 319 | (true, &t[2..]) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/davheaders.rs:318:25 [INFO] [stdout] | [INFO] [stdout] 318 | let (weak, s) = if t.starts_with("W/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 318 ~ let (weak, s) = if let Some() = t.strip_prefix("W/") { [INFO] [stdout] 319 ~ (true, ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:402:9 [INFO] [stdout] | [INFO] [stdout] 402 | / match self { [INFO] [stdout] 403 | | &IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] 404 | | &IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] 405 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 402 ~ match *self { [INFO] [stdout] 403 ~ IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] 404 ~ IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/davheaders.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | &IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 403 - &IfRange::Date(ref d) => d.encode(values), [INFO] [stdout] 403 + IfRange::Date(d) => d.encode(values), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/davheaders.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | &IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 404 - &IfRange::ETag(ref t) => t.encode(values), [INFO] [stdout] 404 + IfRange::ETag(t) => t.encode(values), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:450:17 [INFO] [stdout] | [INFO] [stdout] 450 | let value = match m { [INFO] [stdout] | _________________^ [INFO] [stdout] 451 | | &ETagList::Star => "*".to_string(), [INFO] [stdout] 452 | | &ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] 453 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 450 ~ let value = match *m { [INFO] [stdout] 451 ~ ETagList::Star => "*".to_string(), [INFO] [stdout] 452 ~ ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/davheaders.rs:452:9 [INFO] [stdout] | [INFO] [stdout] 452 | &ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 452 - &ETagList::Tags(ref t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] 452 + ETagList::Tags(t) => t.iter().map(|t| t.tag.as_str()).collect::>().join(", "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/davheaders.rs:531:9 [INFO] [stdout] | [INFO] [stdout] 531 | return Err(invalid()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 531 - return Err(invalid()); [INFO] [stdout] 531 + Err(invalid()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:517:12 [INFO] [stdout] | [INFO] [stdout] 517 | if nums[0] != "" && nums[1] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[0].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:517:29 [INFO] [stdout] | [INFO] [stdout] 517 | if nums[0] != "" && nums[1] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[1].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:523:12 [INFO] [stdout] | [INFO] [stdout] 523 | if nums[0] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[0].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/davheaders.rs:528:12 [INFO] [stdout] | [INFO] [stdout] 528 | if nums[1] != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!nums[1].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/davheaders.rs:536:21 [INFO] [stdout] | [INFO] [stdout] 536 | let value = match self { [INFO] [stdout] | _____________________^ [INFO] [stdout] 537 | | &XUpdateRange::Append => "append".to_string(), [INFO] [stdout] 538 | | &XUpdateRange::FromTo(b, e) => format!("{}-{}", b, e), [INFO] [stdout] 539 | | &XUpdateRange::AllFrom(b) => format!("{}-", b), [INFO] [stdout] 540 | | &XUpdateRange::Last(e) => format!("-{}", e), [INFO] [stdout] 541 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 536 ~ let value = match *self { [INFO] [stdout] 537 ~ XUpdateRange::Append => "append".to_string(), [INFO] [stdout] 538 ~ XUpdateRange::FromTo(b, e) => format!("{}-{}", b, e), [INFO] [stdout] 539 ~ XUpdateRange::AllFrom(b) => format!("{}-", b), [INFO] [stdout] 540 ~ XUpdateRange::Last(e) => format!("-{}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/davheaders.rs:605:5 [INFO] [stdout] | [INFO] [stdout] 605 | b" \t\r\n".iter().any(|&x| x == c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b" \t\r\n".contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/davheaders.rs:608:5 [INFO] [stdout] | [INFO] [stdout] 608 | b"<>()[]".iter().any(|&x| x == c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b"<>()[]".contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/davheaders.rs:611:14 [INFO] [stdout] | [INFO] [stdout] 611 | fn trim_left<'a>(mut out: &'a [u8]) -> &'a [u8] { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 611 - fn trim_left<'a>(mut out: &'a [u8]) -> &'a [u8] { [INFO] [stdout] 611 + fn trim_left(mut out: &[u8]) -> &[u8] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/davheaders.rs:648:14 [INFO] [stdout] | [INFO] [stdout] 648 | fn get_token<'a>(buf: &'a [u8]) -> Result<(IfToken, &'a [u8]), headers::Error> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 648 - fn get_token<'a>(buf: &'a [u8]) -> Result<(IfToken, &'a [u8]), headers::Error> { [INFO] [stdout] 648 + fn get_token(buf: &[u8]) -> Result<(IfToken, &[u8]), headers::Error> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davheaders.rs:706:32 [INFO] [stdout] | [INFO] [stdout] 706 | ... if if_lists.0.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!if_lists.0.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/errors.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | / match self { [INFO] [stdout] 36 | | &DavError::FsError(ref e) => Some(e), [INFO] [stdout] 37 | | &DavError::IoError(ref e) => Some(e), [INFO] [stdout] 38 | | &DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] 39 | | &DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] 40 | | _ => None, [INFO] [stdout] 41 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 35 ~ match *self { [INFO] [stdout] 36 ~ DavError::FsError(ref e) => Some(e), [INFO] [stdout] 37 ~ DavError::IoError(ref e) => Some(e), [INFO] [stdout] 38 ~ DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] 39 ~ DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | &DavError::FsError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 36 - &DavError::FsError(ref e) => Some(e), [INFO] [stdout] 36 + DavError::FsError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | &DavError::IoError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 37 - &DavError::IoError(ref e) => Some(e), [INFO] [stdout] 37 + DavError::IoError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | &DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 38 - &DavError::XmlReaderError(ref e) => Some(e), [INFO] [stdout] 38 + DavError::XmlReaderError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | &DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 39 - &DavError::XmlWriterError(ref e) => Some(e), [INFO] [stdout] 39 + DavError::XmlWriterError(e) => Some(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/errors.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | / match self { [INFO] [stdout] 48 | | &DavError::XmlReaderError(_) => write!(f, "XML parse error"), [INFO] [stdout] 49 | | &DavError::XmlWriterError(_) => write!(f, "XML generate error"), [INFO] [stdout] 50 | | &DavError::IoError(_) => write!(f, "I/O error"), [INFO] [stdout] 51 | | _ => write!(f, "{:?}", self), [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 47 ~ match *self { [INFO] [stdout] 48 ~ DavError::XmlReaderError(_) => write!(f, "XML parse error"), [INFO] [stdout] 49 ~ DavError::XmlWriterError(_) => write!(f, "XML generate error"), [INFO] [stdout] 50 ~ DavError::IoError(_) => write!(f, "I/O error"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | _ => io::Error::new(io::ErrorKind::Other, e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 67 - _ => io::Error::new(io::ErrorKind::Other, e), [INFO] [stdout] 67 + _ => io::Error::other(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:122:36 [INFO] [stdout] | [INFO] [stdout] 122 | FsError::NotImplemented => io::Error::new(io::ErrorKind::Other, "NotImplemented"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 122 - FsError::NotImplemented => io::Error::new(io::ErrorKind::Other, "NotImplemented"), [INFO] [stdout] 122 + FsError::NotImplemented => io::Error::other("NotImplemented"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:123:36 [INFO] [stdout] | [INFO] [stdout] 123 | FsError::GeneralFailure => io::Error::new(io::ErrorKind::Other, "GeneralFailure"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 123 - FsError::GeneralFailure => io::Error::new(io::ErrorKind::Other, "GeneralFailure"), [INFO] [stdout] 123 + FsError::GeneralFailure => io::Error::other("GeneralFailure"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:127:41 [INFO] [stdout] | [INFO] [stdout] 127 | FsError::InsufficientStorage => io::Error::new(io::ErrorKind::Other, "InsufficientStorage"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 127 - FsError::InsufficientStorage => io::Error::new(io::ErrorKind::Other, "InsufficientStorage"), [INFO] [stdout] 127 + FsError::InsufficientStorage => io::Error::other("InsufficientStorage"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:128:34 [INFO] [stdout] | [INFO] [stdout] 128 | FsError::LoopDetected => io::Error::new(io::ErrorKind::Other, "LoopDetected"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 128 - FsError::LoopDetected => io::Error::new(io::ErrorKind::Other, "LoopDetected"), [INFO] [stdout] 128 + FsError::LoopDetected => io::Error::other("LoopDetected"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:129:33 [INFO] [stdout] | [INFO] [stdout] 129 | FsError::PathTooLong => io::Error::new(io::ErrorKind::Other, "PathTooLong"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 129 - FsError::PathTooLong => io::Error::new(io::ErrorKind::Other, "PathTooLong"), [INFO] [stdout] 129 + FsError::PathTooLong => io::Error::other("PathTooLong"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:130:30 [INFO] [stdout] | [INFO] [stdout] 130 | FsError::TooLarge => io::Error::new(io::ErrorKind::Other, "TooLarge"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 130 - FsError::TooLarge => io::Error::new(io::ErrorKind::Other, "TooLarge"), [INFO] [stdout] 130 + FsError::TooLarge => io::Error::other("TooLarge"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/errors.rs:131:30 [INFO] [stdout] | [INFO] [stdout] 131 | FsError::IsRemote => io::Error::new(io::ErrorKind::Other, "IsRemote"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 131 - FsError::IsRemote => io::Error::new(io::ErrorKind::Other, "IsRemote"), [INFO] [stdout] 131 + FsError::IsRemote => io::Error::other("IsRemote"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/errors.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / match self { [INFO] [stdout] 163 | | &DavError::XmlReadError => StatusCode::BAD_REQUEST, [INFO] [stdout] 164 | | &DavError::XmlParseError => StatusCode::BAD_REQUEST, [INFO] [stdout] 165 | | &DavError::InvalidPath => StatusCode::BAD_REQUEST, [INFO] [stdout] ... | [INFO] [stdout] 176 | | &DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 177 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 162 ~ match *self { [INFO] [stdout] 163 ~ DavError::XmlReadError => StatusCode::BAD_REQUEST, [INFO] [stdout] 164 ~ DavError::XmlParseError => StatusCode::BAD_REQUEST, [INFO] [stdout] 165 ~ DavError::InvalidPath => StatusCode::BAD_REQUEST, [INFO] [stdout] 166 ~ DavError::IllegalPath => StatusCode::BAD_GATEWAY, [INFO] [stdout] 167 ~ DavError::ForbiddenPath => StatusCode::FORBIDDEN, [INFO] [stdout] 168 ~ DavError::UnknownDavMethod => StatusCode::NOT_IMPLEMENTED, [INFO] [stdout] 169 ~ DavError::ChanError => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 170 ~ DavError::Utf8Error => StatusCode::UNSUPPORTED_MEDIA_TYPE, [INFO] [stdout] 171 ~ DavError::IoError(ref e) => ioerror_to_status(e), [INFO] [stdout] 172 ~ DavError::FsError(ref e) => fserror_to_status(e), [INFO] [stdout] 173 ~ DavError::Status(e) => e, [INFO] [stdout] 174 ~ DavError::StatusClose(e) => e, [INFO] [stdout] 175 ~ DavError::XmlReaderError(ref _e) => StatusCode::BAD_REQUEST, [INFO] [stdout] 176 ~ DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | &DavError::IoError(ref e) => ioerror_to_status(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 171 - &DavError::IoError(ref e) => ioerror_to_status(e), [INFO] [stdout] 171 + DavError::IoError(e) => ioerror_to_status(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | &DavError::FsError(ref e) => fserror_to_status(e), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 172 - &DavError::FsError(ref e) => fserror_to_status(e), [INFO] [stdout] 172 + DavError::FsError(e) => fserror_to_status(e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:175:13 [INFO] [stdout] | [INFO] [stdout] 175 | &DavError::XmlReaderError(ref _e) => StatusCode::BAD_REQUEST, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 175 - &DavError::XmlReaderError(ref _e) => StatusCode::BAD_REQUEST, [INFO] [stdout] 175 + DavError::XmlReaderError(_e) => StatusCode::BAD_REQUEST, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/errors.rs:176:13 [INFO] [stdout] | [INFO] [stdout] 176 | &DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 176 - &DavError::XmlWriterError(ref _e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 176 + DavError::XmlWriterError(_e) => StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:48:45 [INFO] [stdout] | [INFO] [stdout] 48 | Err(e) => return add_status(&mut multierror, source, e).await, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:58:36 [INFO] [stdout] | [INFO] [stdout] 58 | add_status(&mut multierror, source, e).await [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:69:39 [INFO] [stdout] | [INFO] [stdout] 69 | return add_status(&mut multierror, dest, e).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:82:39 [INFO] [stdout] | [INFO] [stdout] 82 | return add_status(&mut multierror, source, e).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:93:49 [INFO] [stdout] | [INFO] [stdout] 93 | Err(e) => return add_status(&mut multierror, source, e).await, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:137:24 [INFO] [stdout] | [INFO] [stdout] 137 | add_status(&mut multierror, &source, e).await [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `multierror` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:137:41 [INFO] [stdout] | [INFO] [stdout] 137 | add_status(&mut multierror, &source, e).await [INFO] [stdout] | ^^^^^^^ help: change this to: `source` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_copymove.rs:150:25 [INFO] [stdout] | [INFO] [stdout] 150 | let overwrite = req [INFO] [stdout] | _________________________^ [INFO] [stdout] 151 | | .headers() [INFO] [stdout] 152 | | .typed_get::() [INFO] [stdout] 153 | | .map_or(true, |o| o.0); [INFO] [stdout] | |__________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 153 - .map_or(true, |o| o.0); [INFO] [stdout] 153 + .is_none_or(|o| o.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:168:34 [INFO] [stdout] | [INFO] [stdout] 168 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_copymove.rs:216:48 [INFO] [stdout] | [INFO] [stdout] 216 | let tokens = match if_match_get_tokens(&req, Some(&meta), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_copymove.rs:226:29 [INFO] [stdout] | [INFO] [stdout] 226 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] = note: `#[warn(clippy::option_as_ref_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/handle_copymove.rs:248:28 [INFO] [stdout] | [INFO] [stdout] 248 | if let Err(_) = self [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 248 ~ if self [INFO] [stdout] 249 + .delete_items(&mut multierror, Depth::Infinity, dmeta.unwrap(), &dest) [INFO] [stdout] 250 + .await.is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/handle_copymove.rs:262:28 [INFO] [stdout] | [INFO] [stdout] 262 | if let Ok(_) = self.do_copy(&path, &dest, &dest, depth, &mut multierror).await { [INFO] [stdout] | -------^^^^^------------------------------------------------------------------ help: try: `if self.do_copy(&path, &dest, &dest, depth, &mut multierror).await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/handle_copymove.rs:272:28 [INFO] [stdout] | [INFO] [stdout] 272 | if let Ok(_) = self.do_move(&path, &dest, &mut multierror).await { [INFO] [stdout] | -------^^^^^---------------------------------------------------- help: try: `if self.do_move(&path, &dest, &mut multierror).await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:51:46 [INFO] [stdout] | [INFO] [stdout] 51 | Err(e) => Err(add_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:58:46 [INFO] [stdout] | [INFO] [stdout] 58 | Err(e) => Err(add_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:65:42 [INFO] [stdout] | [INFO] [stdout] 65 | Err(e) => Err(add_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:75:49 [INFO] [stdout] | [INFO] [stdout] 75 | result = Err(add_status(&mut res, path, e).await); [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:86:51 [INFO] [stdout] | [INFO] [stdout] 86 | if let Err(e) = self.delete_items(&mut res, depth, meta, &npath).await { [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:103:42 [INFO] [stdout] | [INFO] [stdout] 103 | Err(e) => Err(dir_status(&mut res, path, e).await), [INFO] [stdout] | ^^^^^^^^ help: change this to: `res` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:118:34 [INFO] [stdout] | [INFO] [stdout] 118 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_delete.rs:128:46 [INFO] [stdout] | [INFO] [stdout] 128 | let tokens_res = if_match_get_tokens(&req, Some(&meta), &self.fs, &self.ls, &path).await; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_delete.rs:139:29 [INFO] [stdout] | [INFO] [stdout] 139 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/handle_gethead.rs:35:20 [INFO] [stdout] | [INFO] [stdout] 35 | let head = req.method() == &http::Method::HEAD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^------------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `http::Method::HEAD` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_gethead.rs:36:34 [INFO] [stdout] | [INFO] [stdout] 36 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_gethead.rs:110:48 [INFO] [stdout] | [INFO] [stdout] 110 | if let Some(s) = conditional::if_match(&req, Some(&meta), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | if ranges.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ranges.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/handle_gethead.rs:146:20 [INFO] [stdout] | [INFO] [stdout] 146 | if let Err(_) = file.seek(std::io::SeekFrom::Start(ranges[0].start)).await { [INFO] [stdout] | -------^^^^^^------------------------------------------------------------- help: try: `if file.seek(std::io::SeekFrom::Start(ranges[0].start)).await.is_err()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | if ranges.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ranges.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `writeln!` [INFO] [stdout] --> src/handle_gethead.rs:229:33 [INFO] [stdout] | [INFO] [stdout] 229 | let _ = writeln!(hdrs, ""); [INFO] [stdout] | ^^^^^^^^^^^^^----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stdout] = note: `#[warn(clippy::writeln_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:237:28 [INFO] [stdout] | [INFO] [stdout] 237 | if buf.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_gethead.rs:262:30 [INFO] [stdout] | [INFO] [stdout] 262 | let path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_gethead.rs:450:8 [INFO] [stdout] | [INFO] [stdout] 450 | if dpath_segs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `dpath_segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/handle_gethead.rs:451:9 [INFO] [stdout] | [INFO] [stdout] 451 | dpath.push_str("/"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `dpath.push('/')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/handle_gethead.rs:503:5 [INFO] [stdout] | [INFO] [stdout] 503 | / match headers.typed_get::>() { [INFO] [stdout] 504 | | Some(Authorization(basic)) => { [INFO] [stdout] 505 | | vars.insert("AUTH_TYPE".to_string(), "Basic".to_string()); [INFO] [stdout] 506 | | vars.insert("REMOTE_USER".to_string(), basic.username().to_string()); [INFO] [stdout] 507 | | }, [INFO] [stdout] 508 | | _ => {}, [INFO] [stdout] 509 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 503 ~ if let Some(Authorization(basic)) = headers.typed_get::>() { [INFO] [stdout] 504 + vars.insert("AUTH_TYPE".to_string(), "Basic".to_string()); [INFO] [stdout] 505 + vars.insert("REMOTE_USER".to_string(), basic.username().to_string()); [INFO] [stdout] 506 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> src/handle_gethead.rs:553:5 [INFO] [stdout] | [INFO] [stdout] 553 | / fn new(data: String) -> Box { [INFO] [stdout] 554 | | Box::new(HbsFile { [INFO] [stdout] 555 | | meta: HbsMeta { [INFO] [stdout] 556 | | mtime: SystemTime::now(), [INFO] [stdout] ... | [INFO] [stdout] 561 | | }) [INFO] [stdout] 562 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:566:17 [INFO] [stdout] | [INFO] [stdout] 566 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 566 - fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] 566 + fn metadata(&mut self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:570:19 [INFO] [stdout] | [INFO] [stdout] 570 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 570 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] 570 + fn read_bytes(&mut self, count: usize) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:581:13 [INFO] [stdout] | [INFO] [stdout] 581 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 581 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] 581 + fn seek(&mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:601:18 [INFO] [stdout] | [INFO] [stdout] 601 | fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 601 - fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] 601 + fn write_buf(&mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:605:20 [INFO] [stdout] | [INFO] [stdout] 605 | fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 605 - fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] 605 + fn write_bytes(&mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/handle_gethead.rs:609:14 [INFO] [stdout] | [INFO] [stdout] 609 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 609 - fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] 609 + fn flush(&mut self) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/handle_lock.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | if !shared.is_some() || !locktype { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `shared.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/handle_lock.rs:184:9 [INFO] [stdout] | [INFO] [stdout] 184 | return Ok(res); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 184 - return Ok(res); [INFO] [stdout] 184 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_lock.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 39 | if xmldata.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `xmldata.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:41:44 [INFO] [stdout] | [INFO] [stdout] 41 | let (_, tokens) = dav_if_match(&req, &self.fs, &self.ls, &path).await; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:48:39 [INFO] [stdout] | [INFO] [stdout] 48 | let timeout = get_timeout(&req, true, false); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:74:35 [INFO] [stdout] | [INFO] [stdout] 74 | if let Some(s) = if_match(&req, meta.as_ref(), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_lock.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 81 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 82 | | .headers() [INFO] [stdout] 83 | | .typed_get::() [INFO] [stdout] 84 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 84 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 84 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_lock.rs:84:32 [INFO] [stdout] | [INFO] [stdout] 84 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 84 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 84 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_lock.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 88 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 89 | | .headers() [INFO] [stdout] 90 | | .typed_get::() [INFO] [stdout] 91 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 91 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 91 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_lock.rs:91:32 [INFO] [stdout] | [INFO] [stdout] 91 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 91 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 91 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.find_map(..)` can be written more simply using `.map(..).next()` [INFO] [stdout] --> src/handle_lock.rs:110:56 [INFO] [stdout] | [INFO] [stdout] 110 | let name = elem.child_elems_iter().find_map(|e| Some(e.name.as_ref())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_find_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_find_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.find_map(..)` can be written more simply using `.map(..).next()` [INFO] [stdout] --> src/handle_lock.rs:118:56 [INFO] [stdout] | [INFO] [stdout] 118 | let name = elem.child_elems_iter().find_map(|e| Some(e.name.as_ref())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_find_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:140:35 [INFO] [stdout] | [INFO] [stdout] 140 | let timeout = get_timeout(&req, false, shared); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_lock.rs:141:25 [INFO] [stdout] | [INFO] [stdout] 141 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/handle_lock.rs:148:16 [INFO] [stdout] | [INFO] [stdout] 148 | if let None = meta { [INFO] [stdout] | -------^^^^------- help: try: `if meta.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/handle_lock.rs:172:16 [INFO] [stdout] | [INFO] [stdout] 172 | if let None = meta { [INFO] [stdout] | -------^^^^------- help: try: `if meta.is_none()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_lock.rs:203:34 [INFO] [stdout] | [INFO] [stdout] 203 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_lock.rs:218:45 [INFO] [stdout] | [INFO] [stdout] 218 | pub(crate) fn list_lockdiscovery(ls: Option<&Box>, path: &DavPath) -> Element { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavLockSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_lock.rs:235:45 [INFO] [stdout] | [INFO] [stdout] 235 | pub(crate) fn list_supportedlock(ls: Option<&Box>) -> Element { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavLockSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_lock.rs:268:47 [INFO] [stdout] | [INFO] [stdout] 268 | Some(davheaders::Timeout(ref vec)) if vec.len() > 0 => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!vec.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_mkcol.rs:12:34 [INFO] [stdout] | [INFO] [stdout] 12 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_mkcol.rs:16:39 [INFO] [stdout] | [INFO] [stdout] 16 | let res = if_match_get_tokens(&req, meta.as_ref().ok(), &self.fs, &self.ls, &path).await; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_mkcol.rs:25:29 [INFO] [stdout] | [INFO] [stdout] 25 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_options.rs:37:30 [INFO] [stdout] | [INFO] [stdout] 37 | let path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/handle_options.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | let is_file = meta.and_then(|m| Ok(m.is_file())).unwrap_or_default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `meta.map(|m| m.is_file())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:121:29 [INFO] [stdout] | [INFO] [stdout] 121 | e.namespace = match e.prefix.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `e.prefix.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Depth` which implements the `Copy` trait [INFO] [stdout] --> src/handle_props.rs:159:24 [INFO] [stdout] | [INFO] [stdout] 159 | Some(d) => d.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `d` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:163:34 [INFO] [stdout] | [INFO] [stdout] 163 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_props.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | if xmldata.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!xmldata.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:171:48 [INFO] [stdout] | [INFO] [stdout] 171 | if t.name == "propfind" && t.namespace.as_ref().map(|s| s.as_str()) == Some("DAV:") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `t.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:174:36 [INFO] [stdout] | [INFO] [stdout] 174 | return Err(DavError::XmlParseError.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:177:38 [INFO] [stdout] | [INFO] [stdout] 177 | Err(_) => return Err(DavError::XmlParseError.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:196:45 [INFO] [stdout] | [INFO] [stdout] 196 | ... _ => return Err(DavError::XmlParseError.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `errors::DavError` [INFO] [stdout] --> src/handle_props.rs:199:40 [INFO] [stdout] | [INFO] [stdout] 199 | None => return Err(DavError::XmlParseError.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `DavError::XmlParseError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:206:38 [INFO] [stdout] | [INFO] [stdout] 206 | let mut pw = PropWriter::new(&req, &mut res, name, props, &self.fs, self.ls.as_ref())?; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:280:15 [INFO] [stdout] | [INFO] [stdout] 280 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:357:15 [INFO] [stdout] | [INFO] [stdout] 357 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:384:34 [INFO] [stdout] | [INFO] [stdout] 384 | let mut path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:389:48 [INFO] [stdout] | [INFO] [stdout] 389 | let tokens = match if_match_get_tokens(&req, Some(&meta), &self.fs, &self.ls, &path).await { [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:397:29 [INFO] [stdout] | [INFO] [stdout] 397 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:404:53 [INFO] [stdout] | [INFO] [stdout] 404 | std::string::String::from_utf8_lossy(&xmldata)); [INFO] [stdout] | ^^^^^^^^ help: change this to: `xmldata` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:427:49 [INFO] [stdout] | [INFO] [stdout] 427 | match self.liveprop_set(&n, can_deadprop) { [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:428:95 [INFO] [stdout] | [INFO] [stdout] 428 | ... StatusCode::CONTINUE => patch.push((true, element_to_davprop_full(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:429:66 [INFO] [stdout] | [INFO] [stdout] 429 | ... s => ret.push((s, element_to_davprop(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:433:52 [INFO] [stdout] | [INFO] [stdout] 433 | match self.liveprop_remove(&n, can_deadprop) { [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:434:91 [INFO] [stdout] | [INFO] [stdout] 434 | ... StatusCode::CONTINUE => patch.push((false, element_to_davprop(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:435:66 [INFO] [stdout] | [INFO] [stdout] 435 | ... s => ret.push((s, element_to_davprop(&n))), [INFO] [stdout] | ^^ help: change this to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/handle_props.rs:444:28 [INFO] [stdout] | [INFO] [stdout] 444 | if ret.iter().any(|&(ref s, _)| s != &StatusCode::OK) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 444 - if ret.iter().any(|&(ref s, _)| s != &StatusCode::OK) { [INFO] [stdout] 444 + if ret.iter().any(|(s, _)| s != &StatusCode::OK) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/handle_props.rs:456:19 [INFO] [stdout] | [INFO] [stdout] 456 | } else if patch.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!patch.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/handle_props.rs:462:24 [INFO] [stdout] | [INFO] [stdout] 462 | ret.extend(deadret.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 462 - ret.extend(deadret.into_iter()); [INFO] [stdout] 462 + ret.extend(deadret); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/handle_props.rs:468:13 [INFO] [stdout] | [INFO] [stdout] 468 | / if !hm.contains_key(&code) { [INFO] [stdout] 469 | | hm.insert(code, Vec::new()); [INFO] [stdout] 470 | | } [INFO] [stdout] | |_____________^ help: try: `hm.entry(code).or_insert_with(|| Vec::new());` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:476:38 [INFO] [stdout] | [INFO] [stdout] 476 | let mut pw = PropWriter::new(&req, &mut res, "propertyupdate", Vec::new(), &self.fs, None)?; [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_props.rs:496:13 [INFO] [stdout] | [INFO] [stdout] 496 | fs: &Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavFileSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/handle_props.rs:497:20 [INFO] [stdout] | [INFO] [stdout] 497 | ls: Option<&Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn DavLockSystem` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:554:23 [INFO] [stdout] | [INFO] [stdout] 554 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/handle_props.rs:575:24 [INFO] [stdout] | [INFO] [stdout] 575 | ls: ls.map(|ls| ls.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `ls.cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/handle_props.rs:597:16 [INFO] [stdout] | [INFO] [stdout] 597 | if t != "" { [INFO] [stdout] | ^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!t.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/handle_props.rs:641:21 [INFO] [stdout] | [INFO] [stdout] 641 | let avail = match qc.q_total { [INFO] [stdout] | _____________________^ [INFO] [stdout] 642 | | None => None, [INFO] [stdout] 643 | | Some(total) => Some(if total > used { total - used } else { 0 }), [INFO] [stdout] 644 | | }; [INFO] [stdout] | |_________^ help: try: `qc.q_total.map(|total| if total > used { total - used } else { 0 })` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/handle_props.rs:643:33 [INFO] [stdout] | [INFO] [stdout] 643 | Some(total) => Some(if total > used { total - used } else { 0 }), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `total.saturating_sub(used)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|x| x.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:662:15 [INFO] [stdout] | [INFO] [stdout] 662 | match prop.namespace.as_ref().map(|x| x.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.namespace.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/handle_props.rs:692:25 [INFO] [stdout] | [INFO] [stdout] 692 | / if !meta.is_dir() { [INFO] [stdout] 693 | | return self.build_elem(docontent, pfx, prop, meta.len().to_string()); [INFO] [stdout] 694 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 691 ~ "getcontentlength" [INFO] [stdout] 692 ~ if !meta.is_dir() => { [INFO] [stdout] 693 | return self.build_elem(docontent, pfx, prop, meta.len().to_string()); [INFO] [stdout] 694 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:734:70 [INFO] [stdout] | [INFO] [stdout] 734 | if let Ok((_, Some(avail))) = self.get_quota(&mut qc, path, meta).await { [INFO] [stdout] | ^^^^^^^ help: change this to: `qc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_props.rs:740:63 [INFO] [stdout] | [INFO] [stdout] 740 | if let Ok((used, _)) = self.get_quota(&mut qc, path, meta).await { [INFO] [stdout] | ^^^^^^^ help: change this to: `qc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/handle_props.rs:756:17 [INFO] [stdout] | [INFO] [stdout] 756 | / match prop.name.as_str() { [INFO] [stdout] 757 | | "executable" => { [INFO] [stdout] 758 | | if let Ok(x) = meta.executable() { [INFO] [stdout] 759 | | let b = if x { "T" } else { "F" }; [INFO] [stdout] ... | [INFO] [stdout] 763 | | _ => {}, [INFO] [stdout] 764 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 756 ~ if prop.name.as_str() == "executable" { [INFO] [stdout] 757 + if let Ok(x) = meta.executable() { [INFO] [stdout] 758 + let b = if x { "T" } else { "F" }; [INFO] [stdout] 759 + return self.build_elem(docontent, pfx, prop, b); [INFO] [stdout] 760 + } [INFO] [stdout] 761 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/handle_props.rs:837:23 [INFO] [stdout] | [INFO] [stdout] 837 | let prop = if pfx != "" { [INFO] [stdout] | ^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!pfx.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/handle_props.rs:877:9 [INFO] [stdout] | [INFO] [stdout] 877 | Ok::<(), DavError>(self.write_propresponse(path, props)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 877 - Ok::<(), DavError>(self.write_propresponse(path, props)?) [INFO] [stdout] 877 + self.write_propresponse(path, props) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `bytes::Bytes` [INFO] [stdout] --> src/handle_props.rs:913:40 [INFO] [stdout] | [INFO] [stdout] 913 | self.tx.as_mut().unwrap().send(Bytes::from(buffer)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `Bytes::from()`: `buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/handle_props.rs:924:5 [INFO] [stdout] | [INFO] [stdout] 924 | / if !hm.contains_key(&sc) { [INFO] [stdout] 925 | | hm.insert(sc, Vec::new()); [INFO] [stdout] 926 | | } [INFO] [stdout] | |_____^ help: try: `hm.entry(sc).or_insert_with(|| Vec::new());` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|p| p.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_props.rs:957:19 [INFO] [stdout] | [INFO] [stdout] 957 | let pfx = prop.prefix.as_ref().map(|p| p.as_str()).unwrap_or(""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `prop.prefix.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/handle_put.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | io::Error::new(io::ErrorKind::Other, err) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 53 - io::Error::new(io::ErrorKind::Other, err) [INFO] [stdout] 53 + io::Error::other(err) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_put.rs:81:30 [INFO] [stdout] | [INFO] [stdout] 81 | let path = self.path(&req); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/handle_put.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 89 | if req.method() == &http::Method::PATCH { [INFO] [stdout] | ^^^^^^^^^^^^^^^^-------------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `http::Method::PATCH` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_put.rs:90:17 [INFO] [stdout] | [INFO] [stdout] 90 | if !req [INFO] [stdout] | _________________^ [INFO] [stdout] 91 | | .headers() [INFO] [stdout] 92 | | .typed_get::() [INFO] [stdout] 93 | | .map_or(false, |ct| ct.0 == SABRE) [INFO] [stdout] | |__________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 93 - .map_or(false, |ct| ct.0 == SABRE) [INFO] [stdout] 93 + .is_some_and(|ct| ct.0 == SABRE) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/handle_put.rs:156:42 [INFO] [stdout] | [INFO] [stdout] 156 | let tokens = if_match_get_tokens(&req, meta.as_ref().ok(), &self.fs, &self.ls, &path); [INFO] [stdout] | ^^^^ help: change this to: `req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value [INFO] [stdout] --> src/handle_put.rs:165:29 [INFO] [stdout] | [INFO] [stdout] 165 | let principal = self.principal.as_ref().map(|s| s.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_put.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 172 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 173 | | .headers() [INFO] [stdout] 174 | | .typed_get::() [INFO] [stdout] 175 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 175 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 175 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_put.rs:175:32 [INFO] [stdout] | [INFO] [stdout] 175 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 175 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 175 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/handle_put.rs:179:12 [INFO] [stdout] | [INFO] [stdout] 179 | if req [INFO] [stdout] | ____________^ [INFO] [stdout] 180 | | .headers() [INFO] [stdout] 181 | | .typed_get::() [INFO] [stdout] 182 | | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 182 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 182 + .is_some_and(|h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/handle_put.rs:182:32 [INFO] [stdout] | [INFO] [stdout] 182 | .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 182 - .map_or(false, |h| &h.0 == &davheaders::ETagList::Star) [INFO] [stdout] 182 + .map_or(false, |h| h.0 == davheaders::ETagList::Star) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/handle_put.rs:202:20 [INFO] [stdout] | [INFO] [stdout] 202 | if let Err(_) = file.seek(std::io::SeekFrom::Start(start)).await { [INFO] [stdout] | -------^^^^^^--------------------------------------------------- help: try: `if file.seek(std::io::SeekFrom::Start(start)).await.is_err()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/localfs_windows.rs:28:23 [INFO] [stdout] | [INFO] [stdout] 28 | pub(crate) fn resolve<'a>(base: impl Into, path: &DavPath) -> PathBuf { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/localfs_windows.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | fullpath.push(&path); [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/localfs_windows.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | let cache = &*(&*CACHE); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 46 - let cache = &*(&*CACHE); [INFO] [stdout] 46 + let cache = (&*CACHE); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 46 | let cache = &**(&*CACHE); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: immediately dereferencing a reference [INFO] [stdout] --> src/localfs_windows.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | let cache = &*(&*CACHE); [INFO] [stdout] | ^^^^^^^^^^ help: try: `*CACHE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stdout] = note: `#[warn(clippy::deref_addrof)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/localfs_windows.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | if segs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/localfs_windows.rs:150:23 [INFO] [stdout] | [INFO] [stdout] 150 | path.push(&name); [INFO] [stdout] | ^^^^^ help: change this to: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/multierror.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | if text.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!text.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/multierror.rs:55:16 [INFO] [stdout] | [INFO] [stdout] 55 | write_elem(&mut w, "D:href", &p)?; [INFO] [stdout] | ^^^^^^ help: change this to: `w` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/multierror.rs:56:16 [INFO] [stdout] | [INFO] [stdout] 56 | write_elem(&mut w, "D:status", &format!("HTTP/1.1 {}", sc))?; [INFO] [stdout] | ^^^^^^ help: change this to: `w` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | if n.children.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!n.children.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree.rs:175:34 [INFO] [stdout] | [INFO] [stdout] 175 | if !overwrite || cnode.children.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!cnode.children.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/util.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | let m = match m { [INFO] [stdout] | _____________^ [INFO] [stdout] 34 | | &http::Method::HEAD => DavMethod::Head, [INFO] [stdout] 35 | | &http::Method::GET => DavMethod::Get, [INFO] [stdout] 36 | | &http::Method::PUT => DavMethod::Put, [INFO] [stdout] ... | [INFO] [stdout] 53 | | }, [INFO] [stdout] 54 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 33 ~ let m = match *m { [INFO] [stdout] 34 ~ http::Method::HEAD => DavMethod::Head, [INFO] [stdout] 35 ~ http::Method::GET => DavMethod::Get, [INFO] [stdout] 36 ~ http::Method::PUT => DavMethod::Put, [INFO] [stdout] 37 ~ http::Method::PATCH => DavMethod::Patch, [INFO] [stdout] 38 ~ http::Method::DELETE => DavMethod::Delete, [INFO] [stdout] 39 ~ http::Method::OPTIONS => DavMethod::Options, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/util.rs:183:19 [INFO] [stdout] | [INFO] [stdout] 183 | let buf = std::mem::replace(self.0.get_mut(), Vec::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(self.0.get_mut())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/xmltree_ext.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | fn text<'a, T: Into>(self, t: T) -> Self; [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/body.rs:41:74 [INFO] [stdout] | [INFO] [stdout] 41 | BodyType::Bytes(ref mut strm) => Poll::Ready(strm.take().map(|b| Ok(b))), [INFO] [stdout] | ^^^^^^^^^ help: replace the closure with the tuple variant itself: `Ok` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:35:26 [INFO] [stdout] | [INFO] [stdout] 35 | let unreserved = (byte >= b'A' && byte <= b'Z') || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | (byte >= b'a' && byte <= b'z') || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | (byte >= b'0' && byte <= b'9') || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'0'..=b'9').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/davpath.rs:118:27 [INFO] [stdout] | [INFO] [stdout] 118 | if rp.iter().any(|&x| x < 32 || x > 126) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use: `!(32..=126).contains(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/davpath.rs:137:17 [INFO] [stdout] | [INFO] [stdout] 137 | let isdir = match rawpath.last() { [INFO] [stdout] | _________________^ [INFO] [stdout] 138 | | Some(x) if *x == b'/' => true, [INFO] [stdout] 139 | | _ => false, [INFO] [stdout] 140 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 137 - let isdir = match rawpath.last() { [INFO] [stdout] 138 - Some(x) if *x == b'/' => true, [INFO] [stdout] 139 - _ => false, [INFO] [stdout] 140 - }; [INFO] [stdout] 137 + let isdir = matches!(rawpath.last(), Some(x) if *x == b'/'); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:276:12 [INFO] [stdout] | [INFO] [stdout] 276 | if self.get_prefix().len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.get_prefix().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:301:25 [INFO] [stdout] | [INFO] [stdout] 301 | .filter(|e| e.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!e.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:304:12 [INFO] [stdout] | [INFO] [stdout] 304 | if segs.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:375:27 [INFO] [stdout] | [INFO] [stdout] 375 | let mut path = if spath.len() > 0 { &spath[1..] } else { spath }; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!spath.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:406:25 [INFO] [stdout] | [INFO] [stdout] 406 | .filter(|e| e.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!e.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/davpath.rs:408:12 [INFO] [stdout] | [INFO] [stdout] 408 | if segs.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!segs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:231:18 [INFO] [stdout] | [INFO] [stdout] 231 | fn get_quota<'a>(&'a self) -> FsFuture<(u64, Option)> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 231 - fn get_quota<'a>(&'a self) -> FsFuture<(u64, Option)> { [INFO] [stdout] 231 + fn get_quota(&self) -> FsFuture<(u64, Option)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:263:17 [INFO] [stdout] | [INFO] [stdout] 263 | fn metadata<'a>(&'a self) -> FsFuture>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 263 - fn metadata<'a>(&'a self) -> FsFuture>; [INFO] [stdout] 263 + fn metadata(&self) -> FsFuture>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:269:15 [INFO] [stdout] | [INFO] [stdout] 269 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 269 - fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] 269 + fn is_dir(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:274:16 [INFO] [stdout] | [INFO] [stdout] 274 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 274 - fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] 274 + fn is_file(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:279:19 [INFO] [stdout] | [INFO] [stdout] 279 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 279 - fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] 279 + fn is_symlink(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | fn metadata<'a>(&'a mut self) -> FsFuture>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 287 - fn metadata<'a>(&'a mut self) -> FsFuture>; [INFO] [stdout] 287 + fn metadata(&mut self) -> FsFuture>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:288:18 [INFO] [stdout] | [INFO] [stdout] 288 | fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 288 - fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] 288 + fn write_buf(&mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:289:20 [INFO] [stdout] | [INFO] [stdout] 289 | fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 289 - fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] 289 + fn write_bytes(&mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:290:19 [INFO] [stdout] | [INFO] [stdout] 290 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 290 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture; [INFO] [stdout] 290 + fn read_bytes(&mut self, count: usize) -> FsFuture; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:291:13 [INFO] [stdout] | [INFO] [stdout] 291 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 291 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] 291 + fn seek(&mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/fs.rs:292:14 [INFO] [stdout] | [INFO] [stdout] 292 | fn flush<'a>(&'a mut self) -> FsFuture<()>; [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 292 - fn flush<'a>(&'a mut self) -> FsFuture<()>; [INFO] [stdout] 292 + fn flush(&mut self) -> FsFuture<()>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `DavMetaData` has a `len` method but no (possibly inherited) `is_empty` method [INFO] [stdout] --> src/fs.rs:296:1 [INFO] [stdout] | [INFO] [stdout] 296 | / pub trait DavMetaData: Debug + BoxCloneMd + Send + Sync { [INFO] [stdout] 297 | | /// Size of the file. [INFO] [stdout] 298 | | fn len(&self) -> u64; [INFO] [stdout] 299 | | /// `Modified` timestamp. [INFO] [stdout] ... | [INFO] [stdout] 352 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/localfs.rs:206:66 [INFO] [stdout] | [INFO] [stdout] 206 | crate::localfs_windows::resolve(&self.inner.basedir, &path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/localfs.rs:498:6 [INFO] [stdout] | [INFO] [stdout] 498 | impl<'a> Stream for LocalFsReadDir { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/localfs.rs:505:12 [INFO] [stdout] | [INFO] [stdout] 505 | if this.buffer.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `this.buffer.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/localfs.rs:521:25 [INFO] [stdout] | [INFO] [stdout] 521 | / for e in &batch.buffer { [INFO] [stdout] 522 | | if let Ok(ref e) = e { [INFO] [stdout] 523 | | nb.add(e.entry.file_name()); [INFO] [stdout] 524 | | } [INFO] [stdout] 525 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/localfs.rs:522:29 [INFO] [stdout] | [INFO] [stdout] 522 | / ... if let Ok(ref e) = e { [INFO] [stdout] 523 | | ... nb.add(e.entry.file_name()); [INFO] [stdout] 524 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 521 ~ for ref e in batch.buffer.iter().flatten() { [INFO] [stdout] 522 + nb.add(e.entry.file_name()); [INFO] [stdout] 523 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:585:17 [INFO] [stdout] | [INFO] [stdout] 585 | fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 585 - fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] 585 + fn metadata(&self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:611:15 [INFO] [stdout] | [INFO] [stdout] 611 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 611 - fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] 611 + fn is_dir(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:615:16 [INFO] [stdout] | [INFO] [stdout] 615 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 615 - fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] 615 + fn is_file(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:619:19 [INFO] [stdout] | [INFO] [stdout] 619 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 619 - fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] 619 + fn is_symlink(&self) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:625:17 [INFO] [stdout] | [INFO] [stdout] 625 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 625 - fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] 625 + fn metadata(&mut self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:635:20 [INFO] [stdout] | [INFO] [stdout] 635 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 635 - fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] 635 + fn write_bytes(&mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:645:18 [INFO] [stdout] | [INFO] [stdout] 645 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 645 - fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] 645 + fn write_buf(&mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:665:19 [INFO] [stdout] | [INFO] [stdout] 665 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 665 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] 665 + fn read_bytes(&mut self, count: usize) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:686:13 [INFO] [stdout] | [INFO] [stdout] 686 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 686 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] 686 + fn seek(&mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/localfs.rs:696:14 [INFO] [stdout] | [INFO] [stdout] 696 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 696 - fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] 696 + fn flush(&mut self) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/ls.rs:48:10 [INFO] [stdout] | [INFO] [stdout] 48 | ) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/ls.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | fn unlock(&self, path: &DavPath, token: &str) -> Result<(), ()>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/ls.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | fn refresh(&self, path: &DavPath, token: &str, timeout: Option) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/ls.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | ) -> Result<(), DavLock>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/ls.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | fn delete(&self, path: &DavPath) -> Result<(), ()>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/memfs.rs:151:46 [INFO] [stdout] | [INFO] [stdout] 151 | let strm = futures::stream::iter(v.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.15/src/stream/iter.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | I: IntoIterator, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 151 - let strm = futures::stream::iter(v.into_iter()); [INFO] [stdout] 151 + let strm = futures::stream::iter(v); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to move all elements into a new `Vec` [INFO] [stdout] --> src/memfs.rs:262:25 [INFO] [stdout] | [INFO] [stdout] 262 | let patch = patch.drain(..).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `mem::take`: `std::mem::take(&mut patch)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drain_collect [INFO] [stdout] = note: `#[warn(clippy::drain_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/memfs.rs:289:27 [INFO] [stdout] | [INFO] [stdout] 289 | for (_, p) in node.get_props() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 289 - for (_, p) in node.get_props() { [INFO] [stdout] 289 + for p in node.get_props().values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/memfs.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 306 | Ok(p.xml.clone().ok_or(FsError::NotFound)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 306 - Ok(p.xml.clone().ok_or(FsError::NotFound)?) [INFO] [stdout] 306 + p.xml.clone().ok_or(FsError::NotFound) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:328:17 [INFO] [stdout] | [INFO] [stdout] 328 | fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 328 - fn metadata<'a>(&'a self) -> FsFuture> { [INFO] [stdout] 328 + fn metadata(&self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:339:17 [INFO] [stdout] | [INFO] [stdout] 339 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 339 - fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] 339 + fn metadata(&mut self) -> FsFuture> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:349:19 [INFO] [stdout] | [INFO] [stdout] 349 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 349 - fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] 349 + fn read_bytes(&mut self, count: usize) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:370:20 [INFO] [stdout] | [INFO] [stdout] 370 | fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 370 - fn write_bytes<'a>(&'a mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] 370 + fn write_bytes(&mut self, buf: Bytes) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:389:18 [INFO] [stdout] | [INFO] [stdout] 389 | fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 389 - fn write_buf<'a>(&'a mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] 389 + fn write_buf(&mut self, mut buf: Box) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:413:14 [INFO] [stdout] | [INFO] [stdout] 413 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 413 - fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] 413 + fn flush(&mut self) -> FsFuture<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/memfs.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | ^^ ^^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 417 - fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] 417 + fn seek(&mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:484:45 [INFO] [stdout] | [INFO] [stdout] 484 | let (is_dir, size, mtime, crtime) = match self { [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 485 | | &MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] 486 | | &MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] 487 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 484 ~ let (is_dir, size, mtime, crtime) = match *self { [INFO] [stdout] 485 ~ MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] 486 ~ MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:485:13 [INFO] [stdout] | [INFO] [stdout] 485 | &MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 485 - &MemFsNode::File(ref file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] 485 + MemFsNode::File(file) => (false, file.data.len() as u64, file.mtime, file.crtime), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:486:13 [INFO] [stdout] | [INFO] [stdout] 486 | &MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 486 - &MemFsNode::Dir(ref dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] 486 + MemFsNode::Dir(dir) => (true, 0, dir.mtime, dir.crtime), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/memfs.rs:493:21 [INFO] [stdout] | [INFO] [stdout] 493 | size: size as u64, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:498:9 [INFO] [stdout] | [INFO] [stdout] 498 | / match self { [INFO] [stdout] 499 | | &mut MemFsNode::Dir(ref mut d) => d.mtime = tm, [INFO] [stdout] 500 | | &mut MemFsNode::File(ref mut f) => f.mtime = tm, [INFO] [stdout] 501 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 498 ~ match *self { [INFO] [stdout] 499 ~ MemFsNode::Dir(ref mut d) => d.mtime = tm, [INFO] [stdout] 500 ~ MemFsNode::File(ref mut f) => f.mtime = tm, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:505:9 [INFO] [stdout] | [INFO] [stdout] 505 | / match self { [INFO] [stdout] 506 | | &MemFsNode::Dir(_) => true, [INFO] [stdout] 507 | | &MemFsNode::File(_) => false, [INFO] [stdout] 508 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 505 ~ match *self { [INFO] [stdout] 506 ~ MemFsNode::Dir(_) => true, [INFO] [stdout] 507 ~ MemFsNode::File(_) => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:513:13 [INFO] [stdout] | [INFO] [stdout] 513 | &MemFsNode::File(ref n) => Ok(n), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 513 - &MemFsNode::File(ref n) => Ok(n), [INFO] [stdout] 513 + MemFsNode::File(n) => Ok(n), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:526:9 [INFO] [stdout] | [INFO] [stdout] 526 | / match self { [INFO] [stdout] 527 | | &MemFsNode::File(ref n) => &n.props, [INFO] [stdout] 528 | | &MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] 529 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 526 ~ match *self { [INFO] [stdout] 527 ~ MemFsNode::File(ref n) => &n.props, [INFO] [stdout] 528 ~ MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:527:13 [INFO] [stdout] | [INFO] [stdout] 527 | &MemFsNode::File(ref n) => &n.props, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 527 - &MemFsNode::File(ref n) => &n.props, [INFO] [stdout] 527 + MemFsNode::File(n) => &n.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/memfs.rs:528:13 [INFO] [stdout] | [INFO] [stdout] 528 | &MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 528 - &MemFsNode::Dir(ref d) => &d.props, [INFO] [stdout] 528 + MemFsNode::Dir(d) => &d.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/memfs.rs:533:9 [INFO] [stdout] | [INFO] [stdout] 533 | / match self { [INFO] [stdout] 534 | | &mut MemFsNode::File(ref mut n) => &mut n.props, [INFO] [stdout] 535 | | &mut MemFsNode::Dir(ref mut d) => &mut d.props, [INFO] [stdout] 536 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 533 ~ match *self { [INFO] [stdout] 534 ~ MemFsNode::File(ref mut n) => &mut n.props, [INFO] [stdout] 535 ~ MemFsNode::Dir(ref mut d) => &mut d.props, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memfs.rs:564:64 [INFO] [stdout] | [INFO] [stdout] 564 | self.lookup_segs(path.split(|&c| c == b'/').filter(|s| s.len() > 0).collect()) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memfs.rs:570:74 [INFO] [stdout] | [INFO] [stdout] 570 | let mut segs: Vec<&[u8]> = path.split(|&c| c == b'/').filter(|s| s.len() > 0).collect(); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/memfs.rs:582:5 [INFO] [stdout] | [INFO] [stdout] 582 | / path.split(|&c| c == b'/') [INFO] [stdout] 583 | | .filter(|s| s.len() > 0) [INFO] [stdout] 584 | | .last() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 584 - .last() [INFO] [stdout] 584 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memfs.rs:583:21 [INFO] [stdout] | [INFO] [stdout] 583 | .filter(|s| s.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/memls.rs:71:26 [INFO] [stdout] | [INFO] [stdout] 71 | let timeout_at = match timeout { [INFO] [stdout] | __________________________^ [INFO] [stdout] 72 | | None => None, [INFO] [stdout] 73 | | Some(d) => Some(SystemTime::now() + d), [INFO] [stdout] 74 | | }; [INFO] [stdout] | |_________^ help: try: `timeout.map(|d| SystemTime::now() + d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/memls.rs:122:20 [INFO] [stdout] | [INFO] [stdout] 122 | let node = (&mut inner.tree).get_node_mut(node_id).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `inner.tree` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/memls.rs:125:26 [INFO] [stdout] | [INFO] [stdout] 125 | let timeout_at = match timeout { [INFO] [stdout] | __________________________^ [INFO] [stdout] 126 | | None => None, [INFO] [stdout] 127 | | Some(d) => Some(SystemTime::now() + d), [INFO] [stdout] 128 | | }; [INFO] [stdout] | |_________^ help: try: `timeout.map(|d| SystemTime::now() + d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/memls.rs:180:13 [INFO] [stdout] | [INFO] [stdout] 180 | (&mut inner.tree).delete_subtree(node_id).ok(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `inner.tree` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/memls.rs:194:6 [INFO] [stdout] | [INFO] [stdout] 194 | ) -> Result<(), DavLock> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `first_lock_seen` after checking its variant with `is_some` [INFO] [stdout] --> src/memls.rs:240:20 [INFO] [stdout] | [INFO] [stdout] 239 | if !holds_lock && first_lock_seen.is_some() { [INFO] [stdout] | ------------------------- the check is happening here [INFO] [stdout] 240 | return Err(first_lock_seen.unwrap().to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|p| p.as_str())` on an `Option` value [INFO] [stdout] --> src/memls.rs:221:51 [INFO] [stdout] | [INFO] [stdout] 221 | (ignore_principal || principal == nl.principal.as_ref().map(|p| p.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `nl.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/memls.rs:254:6 [INFO] [stdout] | [INFO] [stdout] 254 | ) -> Result<(), DavLock> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/memls.rs:278:6 [INFO] [stdout] | [INFO] [stdout] 278 | ) -> Result<(), DavLock> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 304 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `ls::DavLock`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/memls.rs:285:9 [INFO] [stdout] | [INFO] [stdout] 285 | / if !nl.shared || !shared_ok { [INFO] [stdout] 286 | | if !submitted_tokens.iter().any(|t| t == &nl.token) || [INFO] [stdout] 287 | | (!ignore_principal && principal != nl.principal.as_ref().map(|p| p.as_str())) [INFO] [stdout] ... | [INFO] [stdout] 291 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 285 ~ if (!nl.shared || !shared_ok) { [INFO] [stdout] 286 ~ && (!submitted_tokens.iter().any(|t| t == &nl.token) || [INFO] [stdout] 287 ~ (!ignore_principal && principal != nl.principal.as_ref().map(|p| p.as_str()))) [INFO] [stdout] 288 | { [INFO] [stdout] 289 | return Err(nl.to_owned()); [INFO] [stdout] 290 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|p| p.as_str())` on an `Option` value [INFO] [stdout] --> src/memls.rs:287:52 [INFO] [stdout] | [INFO] [stdout] 287 | (!ignore_principal && principal != nl.principal.as_ref().map(|p| p.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `nl.principal.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/memls.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | / if let Err(l) = check_locks_from_node( [INFO] [stdout] 296 | | tree, [INFO] [stdout] 297 | | node_id, [INFO] [stdout] 298 | | principal, [INFO] [stdout] ... | [INFO] [stdout] 303 | | return Err(l); [INFO] [stdout] 304 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] help: replace it with [INFO] [stdout] | [INFO] [stdout] 295 ~ check_locks_from_node( [INFO] [stdout] 296 + tree, [INFO] [stdout] 297 + node_id, [INFO] [stdout] 298 + principal, [INFO] [stdout] 299 + ignore_principal, [INFO] [stdout] 300 + submitted_tokens, [INFO] [stdout] 301 + shared_ok, [INFO] [stdout] 302 + )? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memls.rs:381:70 [INFO] [stdout] | [INFO] [stdout] 381 | let mut segs: Vec<&[u8]> = path.split(|&c| c == b'/').filter(|s| s.len() > 0).collect(); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/memls.rs:389:8 [INFO] [stdout] | [INFO] [stdout] 389 | if seg.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `seg.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:566:38 [INFO] [stdout] | [INFO] [stdout] 566 | fn metadata<'a>(&'a mut self) -> FsFuture> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 566 | fn metadata<'a>(&'a mut self) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:570:54 [INFO] [stdout] | [INFO] [stdout] 570 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 570 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture<'a, Bytes> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:581:49 [INFO] [stdout] | [INFO] [stdout] 581 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 581 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture<'a, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:601:73 [INFO] [stdout] | [INFO] [stdout] 601 | fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<()> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 601 | fn write_buf<'a>(&'a mut self, _buf: Box) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:605:61 [INFO] [stdout] | [INFO] [stdout] 605 | fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<()> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 605 | fn write_bytes<'a>(&'a mut self, _buf: bytes::Bytes) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/handle_gethead.rs:609:35 [INFO] [stdout] | [INFO] [stdout] 609 | fn flush<'a>(&'a mut self) -> FsFuture<()> { [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 609 | fn flush<'a>(&'a mut self) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/voidfs.rs:23:54 [INFO] [stdout] | [INFO] [stdout] 23 | fn metadata<'a>(&'a self, _path: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 23 | fn metadata<'a>(&'a self, _path: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/voidfs.rs:31:10 [INFO] [stdout] | [INFO] [stdout] 28 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 29 | _path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 30 | _meta: ReadDirMeta, [INFO] [stdout] 31 | ) -> FsFuture>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 31 | ) -> FsFuture<'a, FsStream>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/voidfs.rs:36:73 [INFO] [stdout] | [INFO] [stdout] 36 | fn open<'a>(&'a self, _path: &'a DavPath, _options: OpenOptions) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 36 | fn open<'a>(&'a self, _path: &'a DavPath, _options: OpenOptions) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:96:71 [INFO] [stdout] | [INFO] [stdout] 96 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture>; [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 96 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:103:10 [INFO] [stdout] | [INFO] [stdout] 100 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 101 | path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 102 | meta: ReadDirMeta, [INFO] [stdout] 103 | ) -> FsFuture>>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 103 | ) -> FsFuture<'a, FsStream>>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:106:53 [INFO] [stdout] | [INFO] [stdout] 106 | fn metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture>; [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 106 | fn metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:116:61 [INFO] [stdout] | [INFO] [stdout] 116 | fn symlink_metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 116 | fn symlink_metadata<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:124:55 [INFO] [stdout] | [INFO] [stdout] 124 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 124 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:132:55 [INFO] [stdout] | [INFO] [stdout] 132 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 132 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:140:56 [INFO] [stdout] | [INFO] [stdout] 140 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 140 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:153:68 [INFO] [stdout] | [INFO] [stdout] 153 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 153 | fn rename<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:164:66 [INFO] [stdout] | [INFO] [stdout] 164 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the lifetime is named here [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 164 | fn copy<'a>(&'a self, from: &'a DavPath, to: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:173:73 [INFO] [stdout] | [INFO] [stdout] 173 | fn set_accessed<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<()> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 173 | fn set_accessed<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:182:73 [INFO] [stdout] | [INFO] [stdout] 182 | fn set_modified<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<()> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 182 | fn set_modified<'a>(&'a self, path: &'a DavPath, tm: SystemTime) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:202:10 [INFO] [stdout] | [INFO] [stdout] 199 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 200 | path: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 201 | patch: Vec<(bool, DavProp)>, [INFO] [stdout] 202 | ) -> FsFuture> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 202 | ) -> FsFuture<'a, Vec<(StatusCode, DavProp)>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:211:72 [INFO] [stdout] | [INFO] [stdout] 211 | fn get_props<'a>(&'a self, path: &'a DavPath, do_content: bool) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 211 | fn get_props<'a>(&'a self, path: &'a DavPath, do_content: bool) -> FsFuture<'a, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:219:68 [INFO] [stdout] | [INFO] [stdout] 219 | fn get_prop<'a>(&'a self, path: &'a DavPath, prop: DavProp) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 219 | fn get_prop<'a>(&'a self, path: &'a DavPath, prop: DavProp) -> FsFuture<'a, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:231:35 [INFO] [stdout] | [INFO] [stdout] 231 | fn get_quota<'a>(&'a self) -> FsFuture<(u64, Option)> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 231 | fn get_quota<'a>(&'a self) -> FsFuture<'a, (u64, Option)> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:263:34 [INFO] [stdout] | [INFO] [stdout] 263 | fn metadata<'a>(&'a self) -> FsFuture>; [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 263 | fn metadata<'a>(&'a self) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:269:32 [INFO] [stdout] | [INFO] [stdout] 269 | fn is_dir<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 269 | fn is_dir<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:274:33 [INFO] [stdout] | [INFO] [stdout] 274 | fn is_file<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 274 | fn is_file<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:279:36 [INFO] [stdout] | [INFO] [stdout] 279 | fn is_symlink<'a>(&'a self) -> FsFuture { [INFO] [stdout] | -- ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 279 | fn is_symlink<'a>(&'a self) -> FsFuture<'a, bool> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:287:38 [INFO] [stdout] | [INFO] [stdout] 287 | fn metadata<'a>(&'a mut self) -> FsFuture>; [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 287 | fn metadata<'a>(&'a mut self) -> FsFuture<'a, Box>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:288:72 [INFO] [stdout] | [INFO] [stdout] 288 | fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<()>; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 288 | fn write_buf<'a>(&'a mut self, buf: Box) -> FsFuture<'a, ()>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:289:60 [INFO] [stdout] | [INFO] [stdout] 289 | fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<()>; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 289 | fn write_bytes<'a>(&'a mut self, buf: bytes::Bytes) -> FsFuture<'a, ()>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:290:54 [INFO] [stdout] | [INFO] [stdout] 290 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 290 | fn read_bytes<'a>(&'a mut self, count: usize) -> FsFuture<'a, bytes::Bytes>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:291:49 [INFO] [stdout] | [INFO] [stdout] 291 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture; [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 291 | fn seek<'a>(&'a mut self, pos: SeekFrom) -> FsFuture<'a, u64>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/fs.rs:292:35 [INFO] [stdout] | [INFO] [stdout] 292 | fn flush<'a>(&'a mut self) -> FsFuture<()>; [INFO] [stdout] | -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 292 | fn flush<'a>(&'a mut self) -> FsFuture<'a, ()>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:235:56 [INFO] [stdout] | [INFO] [stdout] 235 | fn metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 235 | fn metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:255:64 [INFO] [stdout] | [INFO] [stdout] 255 | fn symlink_metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 255 | fn symlink_metadata<'a>(&'a self, davpath: &'a DavPath) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:281:10 [INFO] [stdout] | [INFO] [stdout] 278 | &'a self, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 279 | davpath: &'a DavPath, [INFO] [stdout] | -- the lifetime is named here [INFO] [stdout] 280 | meta: ReadDirMeta, [INFO] [stdout] 281 | ) -> FsFuture>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 281 | ) -> FsFuture<'a, FsStream>> [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:306:71 [INFO] [stdout] | [INFO] [stdout] 306 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture> { [INFO] [stdout] | -- -- the lifetime is named here ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 306 | fn open<'a>(&'a self, path: &'a DavPath, options: OpenOptions) -> FsFuture<'a, Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:334:55 [INFO] [stdout] | [INFO] [stdout] 334 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 334 | fn create_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:353:55 [INFO] [stdout] | [INFO] [stdout] 353 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 353 | fn remove_dir<'a>(&'a self, path: &'a DavPath) -> FsFuture<'a, ()> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/localfs.rs:363:56 [INFO] [stdout] | [INFO] [stdout] 363 | fn remove_file<'a>(&'a self, path: &'a DavPath) -> FsFuture<()> { [INFO] [stdout] | -- -- ^^^^^^^^^^^^ the same lifetime is hidden here [WARN] too many lines in the log, truncating it