[INFO] updating cached repository clinuxrulz/sodium-rust-push-pull [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/clinuxrulz/sodium-rust-push-pull [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/clinuxrulz/sodium-rust-push-pull" "work/ex/clippy-test-run/sources/stable/gh/clinuxrulz/sodium-rust-push-pull"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/clinuxrulz/sodium-rust-push-pull'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/clinuxrulz/sodium-rust-push-pull" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clinuxrulz/sodium-rust-push-pull"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clinuxrulz/sodium-rust-push-pull'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 429266536d15d61ba65c328596fabd832480f1b8 [INFO] sha for GitHub repo clinuxrulz/sodium-rust-push-pull: 429266536d15d61ba65c328596fabd832480f1b8 [INFO] validating manifest of clinuxrulz/sodium-rust-push-pull on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of clinuxrulz/sodium-rust-push-pull on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing clinuxrulz/sodium-rust-push-pull [INFO] finished frobbing clinuxrulz/sodium-rust-push-pull [INFO] frobbed toml for clinuxrulz/sodium-rust-push-pull written to work/ex/clippy-test-run/sources/stable/gh/clinuxrulz/sodium-rust-push-pull/Cargo.toml [INFO] started frobbing clinuxrulz/sodium-rust-push-pull [INFO] finished frobbing clinuxrulz/sodium-rust-push-pull [INFO] frobbed toml for clinuxrulz/sodium-rust-push-pull written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clinuxrulz/sodium-rust-push-pull/Cargo.toml [INFO] crate clinuxrulz/sodium-rust-push-pull has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting clinuxrulz/sodium-rust-push-pull against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clinuxrulz/sodium-rust-push-pull:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] aac1c5921845cd016af613f3e375e0fbc537c92f69c056037130a5b49e46ae04 [INFO] running `"docker" "start" "-a" "aac1c5921845cd016af613f3e375e0fbc537c92f69c056037130a5b49e46ae04"` [INFO] [stderr] Checking sodium-rust-push-pull v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/gc.rs:569:13 [INFO] [stderr] | [INFO] [stderr] 569 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/gc.rs:571:17 [INFO] [stderr] | [INFO] [stderr] 571 | desc_op: desc_op, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `desc_op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/lambda.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | deps: deps [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `deps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:116:49 [INFO] [stderr] | [INFO] [stderr] 116 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:125:49 [INFO] [stderr] | [INFO] [stderr] 125 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:125:56 [INFO] [stderr] | [INFO] [stderr] 125 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:179:49 [INFO] [stderr] | [INFO] [stderr] 179 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:188:49 [INFO] [stderr] | [INFO] [stderr] 188 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:188:56 [INFO] [stderr] | [INFO] [stderr] 188 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | coalescer_op: coalescer_op [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `coalescer_op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/gc.rs:569:13 [INFO] [stderr] | [INFO] [stderr] 569 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/gc.rs:571:17 [INFO] [stderr] | [INFO] [stderr] 571 | desc_op: desc_op, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `desc_op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/lambda.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | deps: deps [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `deps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:116:49 [INFO] [stderr] | [INFO] [stderr] 116 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:125:49 [INFO] [stderr] | [INFO] [stderr] 125 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:125:56 [INFO] [stderr] | [INFO] [stderr] 125 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:179:49 [INFO] [stderr] | [INFO] [stderr] 179 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:188:49 [INFO] [stderr] | [INFO] [stderr] 188 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sodium/impl_/lambda.rs:188:56 [INFO] [stderr] | [INFO] [stderr] 188 | fn apply(&self, a: &A, b: &B, c: &C, d: &D, e: &E, f: &F) -> R { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | coalescer_op: coalescer_op [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `coalescer_op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests/stream_test.rs:531:21 [INFO] [stderr] | [INFO] [stderr] 531 | a: a, [INFO] [stderr] | ^^^^ help: replace it with: `a` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests/stream_test.rs:532:21 [INFO] [stderr] | [INFO] [stderr] 532 | b: b, [INFO] [stderr] | ^^^^ help: replace it with: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests/stream_test.rs:533:21 [INFO] [stderr] | [INFO] [stderr] 533 | sw: sw [INFO] [stderr] | ^^^^^^ help: replace it with: `sw` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests/stream_test.rs:598:21 [INFO] [stderr] | [INFO] [stderr] 598 | a: a, [INFO] [stderr] | ^^^^ help: replace it with: `a` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests/stream_test.rs:599:21 [INFO] [stderr] | [INFO] [stderr] 599 | b: b, [INFO] [stderr] | ^^^^ help: replace it with: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests/stream_test.rs:600:21 [INFO] [stderr] | [INFO] [stderr] 600 | sw: sw [INFO] [stderr] | ^^^^^^ help: replace it with: `sw` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/cell.rs:447:17 [INFO] [stderr] | [INFO] [stderr] 447 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::MemoLazy` [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::impl_::MemoLazy; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Node` [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sodium::impl_::Node; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::gc::Gc` [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use sodium::impl_::gc::Gc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/sodium/impl_/gc.rs:588:9 [INFO] [stderr] | [INFO] [stderr] 588 | r [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/sodium/impl_/gc.rs:567:17 [INFO] [stderr] | [INFO] [stderr] 567 | let r = Gc { [INFO] [stderr] | _________________^ [INFO] [stderr] 568 | | ctx: self.clone(), [INFO] [stderr] 569 | | value: value, [INFO] [stderr] 570 | | node: Box::into_raw(Box::new(Node { [INFO] [stderr] ... | [INFO] [stderr] 586 | | })) [INFO] [stderr] 587 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/sodium/impl_/lambda.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | / macro_rules! lambda { [INFO] [stderr] 27 | | ($f:expr) => {{ [INFO] [stderr] 28 | | Lambda::new($f, Vec::new()) [INFO] [stderr] 29 | | }}; [INFO] [stderr] ... | [INFO] [stderr] 32 | | }} [INFO] [stderr] 33 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Listener` [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use sodium::impl_::Listener; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/stream.rs:494:17 [INFO] [stderr] | [INFO] [stderr] 494 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Latch` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::impl_::Latch; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::MemoLazy` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sodium::impl_::MemoLazy; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Node` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use sodium::impl_::Node; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::gc::Gc` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use sodium::impl_::gc::Gc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:48:17 [INFO] [stderr] | [INFO] [stderr] 48 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/cell.rs:447:17 [INFO] [stderr] | [INFO] [stderr] 447 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::MemoLazy` [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::impl_::MemoLazy; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Node` [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sodium::impl_::Node; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::gc::Gc` [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use sodium::impl_::gc::Gc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/sodium/impl_/gc.rs:588:9 [INFO] [stderr] | [INFO] [stderr] 588 | r [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/sodium/impl_/gc.rs:567:17 [INFO] [stderr] | [INFO] [stderr] 567 | let r = Gc { [INFO] [stderr] | _________________^ [INFO] [stderr] 568 | | ctx: self.clone(), [INFO] [stderr] 569 | | value: value, [INFO] [stderr] 570 | | node: Box::into_raw(Box::new(Node { [INFO] [stderr] ... | [INFO] [stderr] 586 | | })) [INFO] [stderr] 587 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/sodium/impl_/lambda.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | / macro_rules! lambda { [INFO] [stderr] 27 | | ($f:expr) => {{ [INFO] [stderr] 28 | | Lambda::new($f, Vec::new()) [INFO] [stderr] 29 | | }}; [INFO] [stderr] ... | [INFO] [stderr] 32 | | }} [INFO] [stderr] 33 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Listener` [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use sodium::impl_::Listener; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/stream.rs:494:17 [INFO] [stderr] | [INFO] [stderr] 494 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Latch` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::impl_::Latch; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::MemoLazy` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sodium::impl_::MemoLazy; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::Node` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use sodium::impl_::Node; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::impl_::gc::Gc` [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use sodium::impl_::gc::Gc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/stream_loop.rs:48:17 [INFO] [stderr] | [INFO] [stderr] 48 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::CellSink` [INFO] [stderr] --> src/tests/cell_test.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::CellSink; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::CellLoop` [INFO] [stderr] --> src/tests/cell_loop_test.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use sodium::CellLoop; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::CellSink` [INFO] [stderr] --> src/tests/cell_loop_test.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::CellSink; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::StreamSink` [INFO] [stderr] --> src/tests/cell_loop_test.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use sodium::StreamSink; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::CellLoop` [INFO] [stderr] --> src/tests/stream_test.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use sodium::CellLoop; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::CellSink` [INFO] [stderr] --> src/tests/stream_test.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sodium::CellSink; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sodium::StreamLoop` [INFO] [stderr] --> src/tests/stream_test.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use sodium::StreamLoop; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `b` [INFO] [stderr] --> src/sodium/impl_/stream.rs:322:42 [INFO] [stderr] | [INFO] [stderr] 322 | let eb = ebs.map(|(ref a,ref b):&(B,S)| a.clone()); [INFO] [stderr] | ^ help: consider using `_b` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/sodium/impl_/stream.rs:323:40 [INFO] [stderr] | [INFO] [stderr] 323 | let es_out = ebs.map(|(ref a,ref b):&(B,S)| b.clone()); [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sodium_ctx` [INFO] [stderr] --> src/tests/stream_test.rs:286:14 [INFO] [stderr] | [INFO] [stderr] 286 | |sodium_ctx| { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_sodium_ctx` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sodium_ctx2` [INFO] [stderr] --> src/tests/stream_test.rs:544:13 [INFO] [stderr] | [INFO] [stderr] 544 | let sodium_ctx2 = sodium_ctx.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_sodium_ctx2` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sodium_ctx2` [INFO] [stderr] --> src/tests/stream_test.rs:614:13 [INFO] [stderr] | [INFO] [stderr] 614 | let sodium_ctx2 = &mut sodium_ctx2; [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_sodium_ctx2` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sodium_ctx` [INFO] [stderr] --> src/tests/stream_test.rs:708:14 [INFO] [stderr] | [INFO] [stderr] 708 | |sodium_ctx| { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_sodium_ctx` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sodium_ctx2` [INFO] [stderr] --> src/tests/stream_test.rs:685:13 [INFO] [stderr] | [INFO] [stderr] 685 | let sodium_ctx2 = &sodium_ctx2; [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_sodium_ctx2` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `b` [INFO] [stderr] --> src/sodium/impl_/stream.rs:322:42 [INFO] [stderr] | [INFO] [stderr] 322 | let eb = ebs.map(|(ref a,ref b):&(B,S)| a.clone()); [INFO] [stderr] | ^ help: consider using `_b` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/sodium/impl_/stream.rs:323:40 [INFO] [stderr] | [INFO] [stderr] 323 | let es_out = ebs.map(|(ref a,ref b):&(B,S)| b.clone()); [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/tests/gc_test.rs:203:25 [INFO] [stderr] | [INFO] [stderr] 203 | fn trace(&self, f: &mut FnMut(&GcDep)) {} [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/tests/stream_test.rs:541:29 [INFO] [stderr] | [INFO] [stderr] 541 | fn trace(&self, f: &mut FnMut(&GcDep)) {} [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/tests/stream_test.rs:608:29 [INFO] [stderr] | [INFO] [stderr] 608 | fn trace(&self, f: &mut FnMut(&GcDep)) {} [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `thunk` [INFO] [stderr] --> src/sodium/impl_/latch.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | thunk: BoxA>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `const_` [INFO] [stderr] --> src/sodium/impl_/latch.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn const_(value: A) -> Latch { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/sodium/impl_/latch.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn newA + 'static>(thunk: F) -> Latch { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get` [INFO] [stderr] --> src/sodium/impl_/latch.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn get(&self) -> &A { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_mut` [INFO] [stderr] --> src/sodium/impl_/latch.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn get_mut(&mut self) -> &mut A { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reset` [INFO] [stderr] --> src/sodium/impl_/latch.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:27:21 [INFO] [stderr] | [INFO] [stderr] 27 | / if let &Some(ref val) = init_value { [INFO] [stderr] 28 | | val.clone() [INFO] [stderr] 29 | | } else { [INFO] [stderr] 30 | | panic!("CellLoop sampled before looped.") [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | if let Some(ref val) = *init_value { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | n.weak = n.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `n.weak += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | n.weak = n.weak - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `n.weak -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | n.weak = n.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `n.weak += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | node.weak = node.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.weak += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | s.strong = s.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `s.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/sodium/impl_/gc.rs:131:29 [INFO] [stderr] | [INFO] [stderr] 131 | value: unsafe { transmute(f(&mut *self.value)) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f(&mut *self.value) as *const B as *mut B` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | node.weak = node.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.weak += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | node.weak = node.weak - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.weak -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | node.strong = node.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | / match self { [INFO] [stderr] 211 | | &Some(ref a) => a.trace(f), [INFO] [stderr] 212 | | &None => () [INFO] [stderr] 213 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 210 | match *self { [INFO] [stderr] 211 | Some(ref a) => a.trace(f), [INFO] [stderr] 212 | None => () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:279:9 [INFO] [stderr] | [INFO] [stderr] 279 | / match self { [INFO] [stderr] 280 | | &mut Some(ref mut a) => a.finalize(), [INFO] [stderr] 281 | | &mut None => () [INFO] [stderr] 282 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 279 | match *self { [INFO] [stderr] 280 | Some(ref mut a) => a.finalize(), [INFO] [stderr] 281 | None => () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:329:19 [INFO] [stderr] | [INFO] [stderr] 329 | fn is_reading(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / match self { [INFO] [stderr] 331 | | &GcCellFlags::Reading(_) => true, [INFO] [stderr] 332 | | _ => false [INFO] [stderr] 333 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 330 | match *self { [INFO] [stderr] 331 | GcCellFlags::Reading(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:336:20 [INFO] [stderr] | [INFO] [stderr] 336 | fn add_reading(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:337:9 [INFO] [stderr] | [INFO] [stderr] 337 | / match self { [INFO] [stderr] 338 | | &GcCellFlags::Reading(ref count) => GcCellFlags::Reading(*count + 1), [INFO] [stderr] 339 | | &GcCellFlags::Unused => GcCellFlags::Reading(1), [INFO] [stderr] 340 | | _ => self.clone(), [INFO] [stderr] 341 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 337 | match *self { [INFO] [stderr] 338 | GcCellFlags::Reading(ref count) => GcCellFlags::Reading(*count + 1), [INFO] [stderr] 339 | GcCellFlags::Unused => GcCellFlags::Reading(1), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:340:18 [INFO] [stderr] | [INFO] [stderr] 340 | _ => self.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:344:20 [INFO] [stderr] | [INFO] [stderr] 344 | fn sub_reading(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:345:9 [INFO] [stderr] | [INFO] [stderr] 345 | / match self { [INFO] [stderr] 346 | | &GcCellFlags::Reading(ref count) => { [INFO] [stderr] 347 | | let count2 = *count - 1; [INFO] [stderr] 348 | | if count2 == 0 { [INFO] [stderr] ... | [INFO] [stderr] 354 | | _ => self.clone(), [INFO] [stderr] 355 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 345 | match *self { [INFO] [stderr] 346 | GcCellFlags::Reading(ref count) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:354:18 [INFO] [stderr] | [INFO] [stderr] 354 | _ => self.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:358:19 [INFO] [stderr] | [INFO] [stderr] 358 | fn is_writing(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / match self { [INFO] [stderr] 360 | | &GcCellFlags::Writing => true, [INFO] [stderr] 361 | | _ => false [INFO] [stderr] 362 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 359 | match *self { [INFO] [stderr] 360 | GcCellFlags::Writing => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:365:20 [INFO] [stderr] | [INFO] [stderr] 365 | fn set_writing(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:369:18 [INFO] [stderr] | [INFO] [stderr] 369 | fn is_unused(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:370:9 [INFO] [stderr] | [INFO] [stderr] 370 | / match self { [INFO] [stderr] 371 | | &GcCellFlags::Unused => true, [INFO] [stderr] 372 | | _ => false [INFO] [stderr] 373 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | match *self { [INFO] [stderr] 371 | GcCellFlags::Unused => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:376:19 [INFO] [stderr] | [INFO] [stderr] 376 | fn set_unused(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/sodium/impl_/gc.rs:487:12 [INFO] [stderr] | [INFO] [stderr] 487 | trace: Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:508:24 [INFO] [stderr] | [INFO] [stderr] 508 | return id.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:513:9 [INFO] [stderr] | [INFO] [stderr] 513 | *next_id = *next_id + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*next_id += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:524:9 [INFO] [stderr] | [INFO] [stderr] 524 | / if let &Some(ref desc) = &self.desc_op { [INFO] [stderr] 525 | | print!("({})", desc); [INFO] [stderr] 526 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 524 | if let Some(ref desc) = self.desc_op { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `sodium::impl_::gc::GcCtx` [INFO] [stderr] --> src/sodium/impl_/gc.rs:543:5 [INFO] [stderr] | [INFO] [stderr] 543 | / pub fn new() -> GcCtx { [INFO] [stderr] 544 | | GcCtx { [INFO] [stderr] 545 | | data: Rc::new(RefCell::new( [INFO] [stderr] 546 | | GcCtxData { [INFO] [stderr] ... | [INFO] [stderr] 552 | | } [INFO] [stderr] 553 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 541 | impl Default for sodium::impl_::gc::GcCtx { [INFO] [stderr] 542 | fn default() -> Self { [INFO] [stderr] 543 | Self::new() [INFO] [stderr] 544 | } [INFO] [stderr] 545 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:565:22 [INFO] [stderr] | [INFO] [stderr] 565 | let value2 = value.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:566:22 [INFO] [stderr] | [INFO] [stderr] 566 | let value3 = value.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | s.strong = s.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `s.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:604:13 [INFO] [stderr] | [INFO] [stderr] 604 | node.strong = node.strong - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.strong -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:629:13 [INFO] [stderr] | [INFO] [stderr] 629 | s.weak = s.weak - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `s.weak -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/sodium/impl_/gc.rs:663:43 [INFO] [stderr] | [INFO] [stderr] 663 | let again = self.with_data(|data| data.to_be_freed.len() != 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.to_be_freed.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:722:17 [INFO] [stderr] | [INFO] [stderr] 722 | t.strong = t.strong - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `t.strong -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:748:13 [INFO] [stderr] | [INFO] [stderr] 748 | t.strong = t.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `t.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/listener.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / if let &mut Some(ref mut node) = node_op { [INFO] [stderr] 34 | | let sodium_ctx = node.sodium_ctx(); [INFO] [stderr] 35 | | if !weak { [INFO] [stderr] 36 | | sodium_ctx.remove_keep_alive(node); [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | node.remove_all_dependencies(); [INFO] [stderr] 39 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 33 | if let Some(ref mut node) = *node_op { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:66:25 [INFO] [stderr] | [INFO] [stderr] 66 | / match self_.upgrade() { [INFO] [stderr] 67 | | Some(self_2) => { [INFO] [stderr] 68 | | let self_ = unsafe { &*(*self_2.data).get() }; [INFO] [stderr] 69 | | self_.dependencies.iter().for_each(|dependency| { [INFO] [stderr] ... | [INFO] [stderr] 82 | | None => () [INFO] [stderr] 83 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 66 | if let Some(self_2) = self_.upgrade() { [INFO] [stderr] 67 | let self_ = unsafe { &*(*self_2.data).get() }; [INFO] [stderr] 68 | self_.dependencies.iter().for_each(|dependency| { [INFO] [stderr] 69 | let dependency = unsafe { &mut *(*dependency.data).get() }; [INFO] [stderr] 70 | dependency.dependents.retain(|dependent| { [INFO] [stderr] 71 | match dependent.upgrade() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/node.rs:130:23 [INFO] [stderr] | [INFO] [stderr] 130 | let self_id = data.id.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data.id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / match self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 178 | | Some(sodium_ctx) => { [INFO] [stderr] 179 | | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 180 | | if !sodium_ctx.to_be_updated_set.contains(self) { [INFO] [stderr] ... | [INFO] [stderr] 185 | | None => () [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 177 | if let Some(sodium_ctx) = self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 178 | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 179 | if !sodium_ctx.to_be_updated_set.contains(self) { [INFO] [stderr] 180 | sodium_ctx.to_be_updated.push(self.clone()); [INFO] [stderr] 181 | sodium_ctx.to_be_updated_set.insert(self.clone()); [INFO] [stderr] 182 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 192 | | Some(sodium_ctx) => { [INFO] [stderr] 193 | | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 194 | | sodium_ctx.to_be_updated_set.remove(self); [INFO] [stderr] ... | [INFO] [stderr] 200 | | None => () [INFO] [stderr] 201 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 191 | if let Some(sodium_ctx) = self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 192 | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 193 | sodium_ctx.to_be_updated_set.remove(self); [INFO] [stderr] 194 | sodium_ctx.to_be_updated.clear(); [INFO] [stderr] 195 | for node in &sodium_ctx.to_be_updated_set { [INFO] [stderr] 196 | sodium_ctx.to_be_updated.push(node.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/node.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | data.rank.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data.rank` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self.weak_sodium_ctx.upgrade() { [INFO] [stderr] 265 | | Some(sodium_ctx) => sodium_ctx.dec_node_count(), [INFO] [stderr] 266 | | None => () [INFO] [stderr] 267 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(sodium_ctx) = self.weak_sodium_ctx.upgrade() { sodium_ctx.dec_node_count() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `sodium::impl_::sodium_ctx::SodiumCtx` [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> SodiumCtx { [INFO] [stderr] 38 | | SodiumCtx { [INFO] [stderr] 39 | | data: Rc::new(UnsafeCell::new(SodiumCtxData { [INFO] [stderr] 40 | | gc_ctx: GcCtx::new(), [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | impl Default for sodium::impl_::sodium_ctx::SodiumCtx { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | self_.next_id = self_.next_id + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.next_id += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | self_.node_count = self_.node_count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.node_count += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | self_.node_count = self_.node_count - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.node_count -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | self_.transaction_depth = self_.transaction_depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | self_.transaction_depth = self_.transaction_depth - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | self_.transaction_depth = self_.transaction_depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | self_.transaction_depth = self_.transaction_depth - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/stream.rs:374:33 [INFO] [stderr] | [INFO] [stderr] 374 | / if let &Some(ref node_self2) = node_self { [INFO] [stderr] 375 | | node_self2.remove_all_dependencies(); [INFO] [stderr] 376 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 374 | if let Some(ref node_self2) = *node_self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tests/cell_loop_test.rs:24:25 [INFO] [stderr] | [INFO] [stderr] 24 | let mut b = sodium_ctx.new_cell_loop(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tests/cell_loop_test.rs:24:25 [INFO] [stderr] | [INFO] [stderr] 24 | let mut b = sodium_ctx.new_cell_loop(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tests/cell_loop_test.rs:54:21 [INFO] [stderr] | [INFO] [stderr] 54 | let mut a = sodium_ctx.new_cell_loop(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tests/cell_loop_test.rs:86:21 [INFO] [stderr] | [INFO] [stderr] 86 | let mut a = sodium_ctx.new_cell_loop(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | / match &self.coalescer_op { [INFO] [stderr] 76 | | &Some(ref coalescer) => { [INFO] [stderr] 77 | | let next_value2 = [INFO] [stderr] 78 | | match next_value { [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 75 | match self.coalescer_op { [INFO] [stderr] 76 | Some(ref coalescer) => { [INFO] [stderr] 77 | let next_value2 = [INFO] [stderr] 78 | match next_value { [INFO] [stderr] 79 | &mut Some(ref next_value3) => { [INFO] [stderr] 80 | let next_value4 = coalescer(next_value3.get(), &value); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | / match next_value { [INFO] [stderr] 79 | | &mut Some(ref next_value3) => { [INFO] [stderr] 80 | | let next_value4 = coalescer(next_value3.get(), &value); [INFO] [stderr] 81 | | Some(sodium_ctx.new_lazy(move || next_value4.clone())) [INFO] [stderr] 82 | | }, [INFO] [stderr] 83 | | &mut None => Some(sodium_ctx.new_lazy(move || value.clone())) [INFO] [stderr] 84 | | }; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *next_value { [INFO] [stderr] 79 | Some(ref next_value3) => { [INFO] [stderr] 80 | let next_value4 = coalescer(next_value3.get(), &value); [INFO] [stderr] 81 | Some(sodium_ctx.new_lazy(move || next_value4.clone())) [INFO] [stderr] 82 | }, [INFO] [stderr] 83 | None => Some(sodium_ctx.new_lazy(move || value.clone())) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `sodium::sodium_ctx::SodiumCtx` [INFO] [stderr] --> src/sodium/sodium_ctx.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> SodiumCtx { [INFO] [stderr] 20 | | SodiumCtx { [INFO] [stderr] 21 | | impl_: impl_::SodiumCtx::new() [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 18 | impl Default for sodium::sodium_ctx::SodiumCtx { [INFO] [stderr] 19 | fn default() -> Self { [INFO] [stderr] 20 | Self::new() [INFO] [stderr] 21 | } [INFO] [stderr] 22 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tests/stream_test.rs:287:21 [INFO] [stderr] | [INFO] [stderr] 287 | let mut sb = sodium_ctx2.new_stream_loop(); [INFO] [stderr] | ----^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tests/stream_test.rs:729:21 [INFO] [stderr] | [INFO] [stderr] 729 | let mut sum = sodium_ctx.new_cell_loop(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never used: `thunk` [INFO] [stderr] --> src/sodium/impl_/latch.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | thunk: BoxA>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `const_` [INFO] [stderr] --> src/sodium/impl_/latch.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn const_(value: A) -> Latch { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/sodium/impl_/latch.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn newA + 'static>(thunk: F) -> Latch { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get` [INFO] [stderr] --> src/sodium/impl_/latch.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn get(&self) -> &A { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_mut` [INFO] [stderr] --> src/sodium/impl_/latch.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn get_mut(&mut self) -> &mut A { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reset` [INFO] [stderr] --> src/sodium/impl_/latch.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/cell_loop.rs:27:21 [INFO] [stderr] | [INFO] [stderr] 27 | / if let &Some(ref val) = init_value { [INFO] [stderr] 28 | | val.clone() [INFO] [stderr] 29 | | } else { [INFO] [stderr] 30 | | panic!("CellLoop sampled before looped.") [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | if let Some(ref val) = *init_value { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | n.weak = n.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `n.weak += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | n.weak = n.weak - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `n.weak -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | n.weak = n.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `n.weak += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | node.weak = node.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.weak += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | s.strong = s.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `s.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/sodium/impl_/gc.rs:131:29 [INFO] [stderr] | [INFO] [stderr] 131 | value: unsafe { transmute(f(&mut *self.value)) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f(&mut *self.value) as *const B as *mut B` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | node.weak = node.weak + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.weak += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | node.weak = node.weak - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.weak -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | node.strong = node.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | / match self { [INFO] [stderr] 211 | | &Some(ref a) => a.trace(f), [INFO] [stderr] 212 | | &None => () [INFO] [stderr] 213 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 210 | match *self { [INFO] [stderr] 211 | Some(ref a) => a.trace(f), [INFO] [stderr] 212 | None => () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:279:9 [INFO] [stderr] | [INFO] [stderr] 279 | / match self { [INFO] [stderr] 280 | | &mut Some(ref mut a) => a.finalize(), [INFO] [stderr] 281 | | &mut None => () [INFO] [stderr] 282 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 279 | match *self { [INFO] [stderr] 280 | Some(ref mut a) => a.finalize(), [INFO] [stderr] 281 | None => () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:329:19 [INFO] [stderr] | [INFO] [stderr] 329 | fn is_reading(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / match self { [INFO] [stderr] 331 | | &GcCellFlags::Reading(_) => true, [INFO] [stderr] 332 | | _ => false [INFO] [stderr] 333 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 330 | match *self { [INFO] [stderr] 331 | GcCellFlags::Reading(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:336:20 [INFO] [stderr] | [INFO] [stderr] 336 | fn add_reading(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:337:9 [INFO] [stderr] | [INFO] [stderr] 337 | / match self { [INFO] [stderr] 338 | | &GcCellFlags::Reading(ref count) => GcCellFlags::Reading(*count + 1), [INFO] [stderr] 339 | | &GcCellFlags::Unused => GcCellFlags::Reading(1), [INFO] [stderr] 340 | | _ => self.clone(), [INFO] [stderr] 341 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 337 | match *self { [INFO] [stderr] 338 | GcCellFlags::Reading(ref count) => GcCellFlags::Reading(*count + 1), [INFO] [stderr] 339 | GcCellFlags::Unused => GcCellFlags::Reading(1), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:340:18 [INFO] [stderr] | [INFO] [stderr] 340 | _ => self.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:344:20 [INFO] [stderr] | [INFO] [stderr] 344 | fn sub_reading(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:345:9 [INFO] [stderr] | [INFO] [stderr] 345 | / match self { [INFO] [stderr] 346 | | &GcCellFlags::Reading(ref count) => { [INFO] [stderr] 347 | | let count2 = *count - 1; [INFO] [stderr] 348 | | if count2 == 0 { [INFO] [stderr] ... | [INFO] [stderr] 354 | | _ => self.clone(), [INFO] [stderr] 355 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 345 | match *self { [INFO] [stderr] 346 | GcCellFlags::Reading(ref count) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:354:18 [INFO] [stderr] | [INFO] [stderr] 354 | _ => self.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:358:19 [INFO] [stderr] | [INFO] [stderr] 358 | fn is_writing(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / match self { [INFO] [stderr] 360 | | &GcCellFlags::Writing => true, [INFO] [stderr] 361 | | _ => false [INFO] [stderr] 362 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 359 | match *self { [INFO] [stderr] 360 | GcCellFlags::Writing => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:365:20 [INFO] [stderr] | [INFO] [stderr] 365 | fn set_writing(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:369:18 [INFO] [stderr] | [INFO] [stderr] 369 | fn is_unused(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:370:9 [INFO] [stderr] | [INFO] [stderr] 370 | / match self { [INFO] [stderr] 371 | | &GcCellFlags::Unused => true, [INFO] [stderr] 372 | | _ => false [INFO] [stderr] 373 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | match *self { [INFO] [stderr] 371 | GcCellFlags::Unused => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/sodium/impl_/gc.rs:376:19 [INFO] [stderr] | [INFO] [stderr] 376 | fn set_unused(&self) -> GcCellFlags { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/sodium/impl_/gc.rs:487:12 [INFO] [stderr] | [INFO] [stderr] 487 | trace: Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:508:24 [INFO] [stderr] | [INFO] [stderr] 508 | return id.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:513:9 [INFO] [stderr] | [INFO] [stderr] 513 | *next_id = *next_id + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*next_id += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/sodium/impl_/gc.rs:524:9 [INFO] [stderr] | [INFO] [stderr] 524 | / if let &Some(ref desc) = &self.desc_op { [INFO] [stderr] 525 | | print!("({})", desc); [INFO] [stderr] 526 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 524 | if let Some(ref desc) = self.desc_op { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `sodium::impl_::gc::GcCtx` [INFO] [stderr] --> src/sodium/impl_/gc.rs:543:5 [INFO] [stderr] | [INFO] [stderr] 543 | / pub fn new() -> GcCtx { [INFO] [stderr] 544 | | GcCtx { [INFO] [stderr] 545 | | data: Rc::new(RefCell::new( [INFO] [stderr] 546 | | GcCtxData { [INFO] [stderr] ... | [INFO] [stderr] 552 | | } [INFO] [stderr] 553 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 541 | impl Default for sodium::impl_::gc::GcCtx { [INFO] [stderr] 542 | fn default() -> Self { [INFO] [stderr] 543 | Self::new() [INFO] [stderr] 544 | } [INFO] [stderr] 545 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:565:22 [INFO] [stderr] | [INFO] [stderr] 565 | let value2 = value.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/gc.rs:566:22 [INFO] [stderr] | [INFO] [stderr] 566 | let value3 = value.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | s.strong = s.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `s.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:604:13 [INFO] [stderr] | [INFO] [stderr] 604 | node.strong = node.strong - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node.strong -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:629:13 [INFO] [stderr] | [INFO] [stderr] 629 | s.weak = s.weak - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `s.weak -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/sodium/impl_/gc.rs:663:43 [INFO] [stderr] | [INFO] [stderr] 663 | let again = self.with_data(|data| data.to_be_freed.len() != 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.to_be_freed.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:722:17 [INFO] [stderr] | [INFO] [stderr] 722 | t.strong = t.strong - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `t.strong -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/gc.rs:748:13 [INFO] [stderr] | [INFO] [stderr] 748 | t.strong = t.strong + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `t.strong += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/listener.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / if let &mut Some(ref mut node) = node_op { [INFO] [stderr] 34 | | let sodium_ctx = node.sodium_ctx(); [INFO] [stderr] 35 | | if !weak { [INFO] [stderr] 36 | | sodium_ctx.remove_keep_alive(node); [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | node.remove_all_dependencies(); [INFO] [stderr] 39 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 33 | if let Some(ref mut node) = *node_op { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:66:25 [INFO] [stderr] | [INFO] [stderr] 66 | / match self_.upgrade() { [INFO] [stderr] 67 | | Some(self_2) => { [INFO] [stderr] 68 | | let self_ = unsafe { &*(*self_2.data).get() }; [INFO] [stderr] 69 | | self_.dependencies.iter().for_each(|dependency| { [INFO] [stderr] ... | [INFO] [stderr] 82 | | None => () [INFO] [stderr] 83 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 66 | if let Some(self_2) = self_.upgrade() { [INFO] [stderr] 67 | let self_ = unsafe { &*(*self_2.data).get() }; [INFO] [stderr] 68 | self_.dependencies.iter().for_each(|dependency| { [INFO] [stderr] 69 | let dependency = unsafe { &mut *(*dependency.data).get() }; [INFO] [stderr] 70 | dependency.dependents.retain(|dependent| { [INFO] [stderr] 71 | match dependent.upgrade() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/node.rs:130:23 [INFO] [stderr] | [INFO] [stderr] 130 | let self_id = data.id.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data.id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / match self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 178 | | Some(sodium_ctx) => { [INFO] [stderr] 179 | | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 180 | | if !sodium_ctx.to_be_updated_set.contains(self) { [INFO] [stderr] ... | [INFO] [stderr] 185 | | None => () [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 177 | if let Some(sodium_ctx) = self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 178 | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 179 | if !sodium_ctx.to_be_updated_set.contains(self) { [INFO] [stderr] 180 | sodium_ctx.to_be_updated.push(self.clone()); [INFO] [stderr] 181 | sodium_ctx.to_be_updated_set.insert(self.clone()); [INFO] [stderr] 182 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 192 | | Some(sodium_ctx) => { [INFO] [stderr] 193 | | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 194 | | sodium_ctx.to_be_updated_set.remove(self); [INFO] [stderr] ... | [INFO] [stderr] 200 | | None => () [INFO] [stderr] 201 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 191 | if let Some(sodium_ctx) = self_.weak_sodium_ctx.upgrade() { [INFO] [stderr] 192 | let sodium_ctx = unsafe { &mut *(*sodium_ctx.data).get() }; [INFO] [stderr] 193 | sodium_ctx.to_be_updated_set.remove(self); [INFO] [stderr] 194 | sodium_ctx.to_be_updated.clear(); [INFO] [stderr] 195 | for node in &sodium_ctx.to_be_updated_set { [INFO] [stderr] 196 | sodium_ctx.to_be_updated.push(node.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/sodium/impl_/node.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | data.rank.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data.rank` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/sodium/impl_/node.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self.weak_sodium_ctx.upgrade() { [INFO] [stderr] 265 | | Some(sodium_ctx) => sodium_ctx.dec_node_count(), [INFO] [stderr] 266 | | None => () [INFO] [stderr] 267 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(sodium_ctx) = self.weak_sodium_ctx.upgrade() { sodium_ctx.dec_node_count() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `sodium::impl_::sodium_ctx::SodiumCtx` [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> SodiumCtx { [INFO] [stderr] 38 | | SodiumCtx { [INFO] [stderr] 39 | | data: Rc::new(UnsafeCell::new(SodiumCtxData { [INFO] [stderr] 40 | | gc_ctx: GcCtx::new(), [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | impl Default for sodium::impl_::sodium_ctx::SodiumCtx { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | self_.next_id = self_.next_id + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.next_id += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | self_.node_count = self_.node_count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.node_count += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | self_.node_count = self_.node_count - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.node_count -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | self_.transaction_depth = self_.transaction_depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | self_.transaction_depth = self_.transaction_depth - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | self_.transaction_depth = self_.transaction_depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sodium/impl_/sodium_ctx.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | self_.transaction_depth = self_.transaction_depth - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self_.transaction_depth -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/stream.rs:374:33 [INFO] [stderr] | [INFO] [stderr] 374 | / if let &Some(ref node_self2) = node_self { [INFO] [stderr] 375 | | node_self2.remove_all_dependencies(); [INFO] [stderr] 376 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 374 | if let Some(ref node_self2) = *node_self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | / match &self.coalescer_op { [INFO] [stderr] 76 | | &Some(ref coalescer) => { [INFO] [stderr] 77 | | let next_value2 = [INFO] [stderr] 78 | | match next_value { [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 75 | match self.coalescer_op { [INFO] [stderr] 76 | Some(ref coalescer) => { [INFO] [stderr] 77 | let next_value2 = [INFO] [stderr] 78 | match next_value { [INFO] [stderr] 79 | &mut Some(ref next_value3) => { [INFO] [stderr] 80 | let next_value4 = coalescer(next_value3.get(), &value); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sodium/impl_/stream_sink.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | / match next_value { [INFO] [stderr] 79 | | &mut Some(ref next_value3) => { [INFO] [stderr] 80 | | let next_value4 = coalescer(next_value3.get(), &value); [INFO] [stderr] 81 | | Some(sodium_ctx.new_lazy(move || next_value4.clone())) [INFO] [stderr] 82 | | }, [INFO] [stderr] 83 | | &mut None => Some(sodium_ctx.new_lazy(move || value.clone())) [INFO] [stderr] 84 | | }; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *next_value { [INFO] [stderr] 79 | Some(ref next_value3) => { [INFO] [stderr] 80 | let next_value4 = coalescer(next_value3.get(), &value); [INFO] [stderr] 81 | Some(sodium_ctx.new_lazy(move || next_value4.clone())) [INFO] [stderr] 82 | }, [INFO] [stderr] 83 | None => Some(sodium_ctx.new_lazy(move || value.clone())) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `sodium::sodium_ctx::SodiumCtx` [INFO] [stderr] --> src/sodium/sodium_ctx.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> SodiumCtx { [INFO] [stderr] 20 | | SodiumCtx { [INFO] [stderr] 21 | | impl_: impl_::SodiumCtx::new() [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 18 | impl Default for sodium::sodium_ctx::SodiumCtx { [INFO] [stderr] 19 | fn default() -> Self { [INFO] [stderr] 20 | Self::new() [INFO] [stderr] 21 | } [INFO] [stderr] 22 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/tests/cell_loop_test.rs:67:48 [INFO] [stderr] | [INFO] [stderr] 67 | move |x| out.borrow_mut().push(x.clone()) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 67 | move |x| out.borrow_mut().push(&(*x).clone()) [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 67 | move |x| out.borrow_mut().push(&str::clone(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | *c = *c + 1; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `*c += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/gc_test.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | / match unsafe { &*self.x.as_ptr() } { [INFO] [stderr] 35 | | &Some(ref a) => f(&a.to_dep()), [INFO] [stderr] 36 | | &None => () [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 34 | match *unsafe { &*self.x.as_ptr() } { [INFO] [stderr] 35 | Some(ref a) => f(&a.to_dep()), [INFO] [stderr] 36 | None => () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | *c = *c - 1; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `*c -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:76:17 [INFO] [stderr] | [INFO] [stderr] 76 | *c = *c + 1; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `*c += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | *c = *c - 1; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `*c -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:131:17 [INFO] [stderr] | [INFO] [stderr] 131 | *c = *c + 1; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `*c += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:155:13 [INFO] [stderr] | [INFO] [stderr] 155 | *c = *c - 1; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `*c -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests/gc_test.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | self.value = self.value + 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.value += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests/stream_test.rs:545:35 [INFO] [stderr] | [INFO] [stderr] 545 | let ca = ssc.map(|s: &SC| s.a.clone()).filter_option().hold("A"); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `s.a` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests/stream_test.rs:546:35 [INFO] [stderr] | [INFO] [stderr] 546 | let cb = ssc.map(|s: &SC| s.b.clone()).filter_option().hold("a"); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `s.b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests/stream_test.rs:547:40 [INFO] [stderr] | [INFO] [stderr] 547 | let csw_str = ssc.map(|s: &SC| s.sw.clone()).filter_option().hold("ca"); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `s.sw` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/tests/stream_test.rs:611:35 [INFO] [stderr] | [INFO] [stderr] 611 | let sa = sss.map(|s: &SS| s.a.clone()); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 611 | let sa = sss.map(|s: &SS| &(*s.a).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 611 | let sa = sss.map(|s: &SS| &str::clone(s.a)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/tests/stream_test.rs:612:35 [INFO] [stderr] | [INFO] [stderr] 612 | let sb = sss.map(|s: &SS| s.b.clone()); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 612 | let sb = sss.map(|s: &SS| &(*s.b).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 612 | let sb = sss.map(|s: &SS| &str::clone(s.b)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests/stream_test.rs:618:30 [INFO] [stderr] | [INFO] [stderr] 618 | |s: &SS| s.sw.clone() [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `s.sw` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `sodium-rust-push-pull`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "aac1c5921845cd016af613f3e375e0fbc537c92f69c056037130a5b49e46ae04"` [INFO] running `"docker" "rm" "-f" "aac1c5921845cd016af613f3e375e0fbc537c92f69c056037130a5b49e46ae04"` [INFO] [stdout] aac1c5921845cd016af613f3e375e0fbc537c92f69c056037130a5b49e46ae04