[INFO] fetching crate frost-dalek 0.2.3... [INFO] linting frost-dalek-0.2.3 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate frost-dalek 0.2.3 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate frost-dalek 0.2.3 [INFO] finished tweaking crates.io crate frost-dalek 0.2.3 [INFO] tweaked toml for crates.io crate frost-dalek 0.2.3 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate frost-dalek 0.2.3 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 90 packages to latest compatible versions [INFO] [stderr] Adding criterion v0.3.6 (available: v0.8.2) [INFO] [stderr] Adding curve25519-dalek v3.2.1 (available: v4.1.3) [INFO] [stderr] Adding ed25519-dalek v1.0.1 (available: v2.2.0) [INFO] [stderr] Adding rand v0.7.3 (available: v0.10.0) [INFO] [stderr] Adding sha2 v0.9.9 (available: v0.10.9) [INFO] [stderr] Adding zeroize v1.3.0 (available: v1.8.2) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] e3877001c53d56a15a6f9b0a72c6d30f6b7d28b6a230a157e955585b5cf5c84a [INFO] running `Command { std: "docker" "start" "-a" "e3877001c53d56a15a6f9b0a72c6d30f6b7d28b6a230a157e955585b5cf5c84a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e3877001c53d56a15a6f9b0a72c6d30f6b7d28b6a230a157e955585b5cf5c84a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e3877001c53d56a15a6f9b0a72c6d30f6b7d28b6a230a157e955585b5cf5c84a", kill_on_drop: false }` [INFO] [stdout] e3877001c53d56a15a6f9b0a72c6d30f6b7d28b6a230a157e955585b5cf5c84a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 62cca9c377c0b0634fac0bfca1047f333a6a40bb37cf9c5abd49c9907f3800b9 [INFO] running `Command { std: "docker" "start" "-a" "62cca9c377c0b0634fac0bfca1047f333a6a40bb37cf9c5abd49c9907f3800b9", kill_on_drop: false }` [INFO] [stderr] Compiling generic-array v0.14.9 [INFO] [stderr] Compiling zeroize_derive v1.4.3 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking half v1.8.3 [INFO] [stderr] Checking signature v1.6.4 [INFO] [stderr] Checking criterion-plot v0.4.5 [INFO] [stderr] Checking ed25519 v1.5.3 [INFO] [stderr] Checking serde_cbor v0.11.2 [INFO] [stderr] Checking zeroize v1.3.0 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking curve25519-dalek v3.2.1 [INFO] [stderr] Checking sha2 v0.9.9 [INFO] [stderr] Checking criterion v0.3.6 [INFO] [stderr] Checking ed25519-dalek v1.0.1 [INFO] [stderr] Checking frost-dalek v0.2.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated method `curve25519_dalek::digest::generic_array::GenericArray::::as_slice`: please upgrade to generic-array 1.x [INFO] [stdout] --> src/signature.rs:190:41 [INFO] [stdout] | [INFO] [stdout] 190 | output.copy_from_slice(h.finalize().as_slice()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `secret_share`, `public_key`, and `group_key` are never read [INFO] [stdout] --> src/keygen.rs:213:16 [INFO] [stdout] | [INFO] [stdout] 212 | pub struct DealtParticipant { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 213 | pub(crate) secret_share: SecretShare, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 214 | pub(crate) public_key: IndividualPublicKey, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 215 | pub(crate) group_key: RistrettoPoint, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DealtParticipant` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `data` is never read [INFO] [stdout] --> src/keygen.rs:385:5 [INFO] [stdout] | [INFO] [stdout] 383 | pub struct DistributedKeyGeneration { [INFO] [stdout] | ------------------------ field in this struct [INFO] [stdout] 384 | state: Box, [INFO] [stdout] 385 | data: S, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DistributedKeyGeneration` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `parameters` is never read [INFO] [stdout] --> src/signature.rs:365:16 [INFO] [stdout] | [INFO] [stdout] 363 | pub(crate) struct AggregatorState { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 364 | /// The protocol instance parameters. [INFO] [stdout] 365 | pub(crate) parameters: Parameters, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AggregatorState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | //! uniformly in \\(\mathbb{Z}\_q\\), and uses these values as coefficients to define a [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | //! polynomial \\(f\_i\(x\) = \sum\_{j=0}^{t-1} a\_{ij} x^{j}\\) of degree \\( t-1 \\) over [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | //! \\(\mathbb{Z}\_q\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | //! \\(C\_i = \[\phi\_{i0}, \\dots, \phi\_{i(t-1)}\]\\), where \\(\phi\_{ij} = g^{a\_{ij}}\\), [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | //! \\(0 \le j \le t-1\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | //! \\(a\_{i0}\\) by calculating a pseudo-Schnorr signature \\(\sigma\_i = \(s, r\)\\). (In [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | //! the FROST paper: \\(\sigma\_i = \(\mu\_i, c\_i\)\\), but we stick with Schnorr's [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | //! original notation here.) [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | //! participant \\(P\_i\\) verifies \\(\sigma\_l = (s\_l, r\_l)\\), by checking: [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | //! \\(s\_l \stackrel{?}{=} \mathcal{H}(l, \Phi, \phi\_{l0}, g^{r\_l} \cdot \phi\_{l0}^{-s\_i})\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | //! If any participants' proofs cannot be verified, return their participant indices. [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | //! \\((l, f\_i(l))\\) using their secret polynomial \\(f\_i(l)\\) and keeps \\((i, f\_i(i))\\) [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | //! for themselves. [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | //! \\(g^{f\_l(i)} \stackrel{?}{=} \prod\_{k=0}^{n-1} \\)\\(\phi\_{lk}^{i^{k} \mod q}\\), [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | //! aborting if the check fails. [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | //! polynomial evaluations (including their own): [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | //! \\(a\_i = g^{f\_i(i)} \cdot \prod\_{l=0}^{n-1} g^{f\_l(i)}\\), as well as calculating [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | //! the group public key in similar fashion from the commitments from round one: [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | //! \\(A = C\_i \cdot \prod\_{l=0}^{n-1} C_l\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/keygen.rs:322:60 [INFO] [stdout] | [INFO] [stdout] 322 | let mut coefficients: Vec = Vec::with_capacity(t as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/keygen.rs:323:79 [INFO] [stdout] | [INFO] [stdout] 323 | let mut commitment = VerifiableSecretSharingCommitment(Vec::with_capacity(t as usize)); [INFO] [stdout] | ^^^^^^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/keygen.rs:459:29 [INFO] [stdout] | [INFO] [stdout] 459 | other_participants: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 459 - other_participants: &mut Vec, [INFO] [stdout] 459 + other_participants: &mut [Participant], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `p.commitments.get(0)` [INFO] [stdout] --> src/keygen.rs:475:36 [INFO] [stdout] | [INFO] [stdout] 475 | let public_key = match p.commitments.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `p.commitments.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:482:58 [INFO] [stdout] | [INFO] [stdout] 482 | match p.proof_of_secret_key.verify(&p.index, &public_key) { [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `public_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:523:5 [INFO] [stdout] | [INFO] [stdout] 523 | pub fn their_secret_shares(&self) -> Result<&Vec, ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:532:5 [INFO] [stdout] | [INFO] [stdout] 532 | / pub fn to_round_two( [INFO] [stdout] 533 | | mut self, [INFO] [stdout] 534 | | my_secret_shares: Vec, [INFO] [stdout] 535 | | ) -> Result, ()> [INFO] [stdout] | |_______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:636:5 [INFO] [stdout] | [INFO] [stdout] 636 | pub fn finish(mut self, my_commitment: &RistrettoPoint) -> Result<(GroupKey, SecretKey), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `commitment.1.0.get(0)` [INFO] [stdout] --> src/keygen.rs:667:19 [INFO] [stdout] | [INFO] [stdout] 667 | match commitment.1.0.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `commitment.1.0.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:712:5 [INFO] [stdout] | [INFO] [stdout] 712 | / pub fn verify( [INFO] [stdout] 713 | | &self, [INFO] [stdout] 714 | | parameters: &Parameters, [INFO] [stdout] 715 | | commitments: &[RistrettoPoint], [INFO] [stdout] 716 | | ) -> Result<(), ()> [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:774:5 [INFO] [stdout] | [INFO] [stdout] 774 | pub fn from_bytes(bytes: [u8; 32]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/nizk.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn verify(&self, index: &u32, public_key: &RistrettoPoint) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/signature.rs:60:1 [INFO] [stdout] | [INFO] [stdout] 60 | / impl PartialOrd for Signer { [INFO] [stdout] 61 | | fn partial_cmp(&self, other: &Signer) -> Option { [INFO] [stdout] 62 | | match self.participant_index.cmp(&other.participant_index) { [INFO] [stdout] 63 | | Ordering::Less => Some(Ordering::Less), [INFO] [stdout] ... | [INFO] [stdout] 69 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - fn partial_cmp(&self, other: &Signer) -> Option { [INFO] [stdout] 62 - match self.participant_index.cmp(&other.participant_index) { [INFO] [stdout] 63 - Ordering::Less => Some(Ordering::Less), [INFO] [stdout] 64 - // WARNING: Participants cannot have identical indices, so dedup() MUST be called. [INFO] [stdout] 65 - Ordering::Equal => Some(Ordering::Equal), [INFO] [stdout] 66 - Ordering::Greater => Some(Ordering::Greater), [INFO] [stdout] 67 - } [INFO] [stdout] 68 - } [INFO] [stdout] 61 + fn partial_cmp(&self, other: &Signer) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/signature.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | pub fn from_bytes(bytes: [u8; 64]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:330:82 [INFO] [stdout] | [INFO] [stdout] 330 | let (binding_factors, Rs) = compute_binding_factors_and_group_commitment(&message_hash, &signers); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `message_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:330:97 [INFO] [stdout] | [INFO] [stdout] 330 | let (binding_factors, Rs) = compute_binding_factors_and_group_commitment(&message_hash, &signers); [INFO] [stdout] | ^^^^^^^^ help: change this to: `signers` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:332:43 [INFO] [stdout] | [INFO] [stdout] 332 | let challenge = compute_challenge(&message_hash, &group_key, &R); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `message_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:332:58 [INFO] [stdout] | [INFO] [stdout] 332 | let challenge = compute_challenge(&message_hash, &group_key, &R); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `group_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'sa [INFO] [stdout] --> src/signature.rs:489:24 [INFO] [stdout] | [INFO] [stdout] 489 | pub fn get_signers<'sa>(&'sa mut self) -> &'sa Vec { [INFO] [stdout] | ^^^ ^^^ ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 489 - pub fn get_signers<'sa>(&'sa mut self) -> &'sa Vec { [INFO] [stdout] 489 + pub fn get_signers(&mut self) -> &Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:569:49 [INFO] [stdout] | [INFO] [stdout] 569 | let message_hash = compute_message_hash(&self.aggregator.context, &self.aggregator.message); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.aggregator.context` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:569:75 [INFO] [stdout] | [INFO] [stdout] 569 | let message_hash = compute_message_hash(&self.aggregator.context, &self.aggregator.message); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.aggregator.message` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/signature.rs:643:5 [INFO] [stdout] | [INFO] [stdout] 643 | pub fn verify(&self, group_key: &GroupKey, message_hash: &[u8; 64]) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:644:41 [INFO] [stdout] | [INFO] [stdout] 644 | let c_prime = compute_challenge(&message_hash, &group_key, &self.R); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `message_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:644:56 [INFO] [stdout] | [INFO] [stdout] 644 | let c_prime = compute_challenge(&message_hash, &group_key, &self.R); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `group_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `public_key` after checking its variant with `is_ok` [INFO] [stdout] --> tests/frost.rs:226:18 [INFO] [stdout] | [INFO] [stdout] 225 | if public_key.is_ok() { [INFO] [stdout] | --------------------- help: try: `if let Ok() = public_key` [INFO] [stdout] 226 | let pk = public_key.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/frost.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | assert!(false); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `curve25519_dalek::digest::generic_array::GenericArray::::as_slice`: please upgrade to generic-array 1.x [INFO] [stdout] --> src/signature.rs:190:41 [INFO] [stdout] | [INFO] [stdout] 190 | output.copy_from_slice(h.finalize().as_slice()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `data` is never read [INFO] [stdout] --> src/keygen.rs:385:5 [INFO] [stdout] | [INFO] [stdout] 383 | pub struct DistributedKeyGeneration { [INFO] [stdout] | ------------------------ field in this struct [INFO] [stdout] 384 | state: Box, [INFO] [stdout] 385 | data: S, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DistributedKeyGeneration` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `parameters` is never read [INFO] [stdout] --> src/signature.rs:365:16 [INFO] [stdout] | [INFO] [stdout] 363 | pub(crate) struct AggregatorState { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 364 | /// The protocol instance parameters. [INFO] [stdout] 365 | pub(crate) parameters: Parameters, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AggregatorState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | //! uniformly in \\(\mathbb{Z}\_q\\), and uses these values as coefficients to define a [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | //! polynomial \\(f\_i\(x\) = \sum\_{j=0}^{t-1} a\_{ij} x^{j}\\) of degree \\( t-1 \\) over [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | //! \\(\mathbb{Z}\_q\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | //! \\(C\_i = \[\phi\_{i0}, \\dots, \phi\_{i(t-1)}\]\\), where \\(\phi\_{ij} = g^{a\_{ij}}\\), [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | //! \\(0 \le j \le t-1\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | //! \\(a\_{i0}\\) by calculating a pseudo-Schnorr signature \\(\sigma\_i = \(s, r\)\\). (In [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | //! the FROST paper: \\(\sigma\_i = \(\mu\_i, c\_i\)\\), but we stick with Schnorr's [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | //! original notation here.) [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | //! participant \\(P\_i\\) verifies \\(\sigma\_l = (s\_l, r\_l)\\), by checking: [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | //! \\(s\_l \stackrel{?}{=} \mathcal{H}(l, \Phi, \phi\_{l0}, g^{r\_l} \cdot \phi\_{l0}^{-s\_i})\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | //! If any participants' proofs cannot be verified, return their participant indices. [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | //! \\((l, f\_i(l))\\) using their secret polynomial \\(f\_i(l)\\) and keeps \\((i, f\_i(i))\\) [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | //! for themselves. [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | //! \\(g^{f\_l(i)} \stackrel{?}{=} \prod\_{k=0}^{n-1} \\)\\(\phi\_{lk}^{i^{k} \mod q}\\), [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | //! aborting if the check fails. [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | //! polynomial evaluations (including their own): [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | //! \\(a\_i = g^{f\_i(i)} \cdot \prod\_{l=0}^{n-1} g^{f\_l(i)}\\), as well as calculating [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | //! the group public key in similar fashion from the commitments from round one: [INFO] [stdout] | ^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/keygen.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | //! \\(A = C\_i \cdot \prod\_{l=0}^{n-1} C_l\\). [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/keygen.rs:322:60 [INFO] [stdout] | [INFO] [stdout] 322 | let mut coefficients: Vec = Vec::with_capacity(t as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/keygen.rs:323:79 [INFO] [stdout] | [INFO] [stdout] 323 | let mut commitment = VerifiableSecretSharingCommitment(Vec::with_capacity(t as usize)); [INFO] [stdout] | ^^^^^^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/keygen.rs:459:29 [INFO] [stdout] | [INFO] [stdout] 459 | other_participants: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 459 - other_participants: &mut Vec, [INFO] [stdout] 459 + other_participants: &mut [Participant], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `p.commitments.get(0)` [INFO] [stdout] --> src/keygen.rs:475:36 [INFO] [stdout] | [INFO] [stdout] 475 | let public_key = match p.commitments.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `p.commitments.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:482:58 [INFO] [stdout] | [INFO] [stdout] 482 | match p.proof_of_secret_key.verify(&p.index, &public_key) { [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `public_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:523:5 [INFO] [stdout] | [INFO] [stdout] 523 | pub fn their_secret_shares(&self) -> Result<&Vec, ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:532:5 [INFO] [stdout] | [INFO] [stdout] 532 | / pub fn to_round_two( [INFO] [stdout] 533 | | mut self, [INFO] [stdout] 534 | | my_secret_shares: Vec, [INFO] [stdout] 535 | | ) -> Result, ()> [INFO] [stdout] | |_______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:636:5 [INFO] [stdout] | [INFO] [stdout] 636 | pub fn finish(mut self, my_commitment: &RistrettoPoint) -> Result<(GroupKey, SecretKey), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `commitment.1.0.get(0)` [INFO] [stdout] --> src/keygen.rs:667:19 [INFO] [stdout] | [INFO] [stdout] 667 | match commitment.1.0.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `commitment.1.0.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:712:5 [INFO] [stdout] | [INFO] [stdout] 712 | / pub fn verify( [INFO] [stdout] 713 | | &self, [INFO] [stdout] 714 | | parameters: &Parameters, [INFO] [stdout] 715 | | commitments: &[RistrettoPoint], [INFO] [stdout] 716 | | ) -> Result<(), ()> [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/keygen.rs:774:5 [INFO] [stdout] | [INFO] [stdout] 774 | pub fn from_bytes(bytes: [u8; 32]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/keygen.rs:847:21 [INFO] [stdout] | [INFO] [stdout] 847 | assert!(!result.is_ok(), "Should not validate with invalid commitment"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `result.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:986:50 [INFO] [stdout] | [INFO] [stdout] 986 | p1.proof_of_secret_key.verify(&p1.index, &p1.public_key().unwrap()).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p1.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:987:50 [INFO] [stdout] | [INFO] [stdout] 987 | p2.proof_of_secret_key.verify(&p2.index, &p2.public_key().unwrap()).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p2.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:988:50 [INFO] [stdout] | [INFO] [stdout] 988 | p3.proof_of_secret_key.verify(&p3.index, &p3.public_key().unwrap()).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p3.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:989:50 [INFO] [stdout] | [INFO] [stdout] 989 | p4.proof_of_secret_key.verify(&p4.index, &p4.public_key().unwrap()).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p4.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:990:50 [INFO] [stdout] | [INFO] [stdout] 990 | p5.proof_of_secret_key.verify(&p5.index, &p5.public_key().unwrap()).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p5.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:1087:54 [INFO] [stdout] | [INFO] [stdout] 1087 | p1.proof_of_secret_key.verify(&p1.index, &p1.public_key().unwrap())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p1.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:1088:54 [INFO] [stdout] | [INFO] [stdout] 1088 | p2.proof_of_secret_key.verify(&p2.index, &p2.public_key().unwrap())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p2.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/keygen.rs:1089:54 [INFO] [stdout] | [INFO] [stdout] 1089 | p3.proof_of_secret_key.verify(&p3.index, &p3.public_key().unwrap())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `p3.public_key().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/nizk.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn verify(&self, index: &u32, public_key: &RistrettoPoint) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/signature.rs:60:1 [INFO] [stdout] | [INFO] [stdout] 60 | / impl PartialOrd for Signer { [INFO] [stdout] 61 | | fn partial_cmp(&self, other: &Signer) -> Option { [INFO] [stdout] 62 | | match self.participant_index.cmp(&other.participant_index) { [INFO] [stdout] 63 | | Ordering::Less => Some(Ordering::Less), [INFO] [stdout] ... | [INFO] [stdout] 69 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - fn partial_cmp(&self, other: &Signer) -> Option { [INFO] [stdout] 62 - match self.participant_index.cmp(&other.participant_index) { [INFO] [stdout] 63 - Ordering::Less => Some(Ordering::Less), [INFO] [stdout] 64 - // WARNING: Participants cannot have identical indices, so dedup() MUST be called. [INFO] [stdout] 65 - Ordering::Equal => Some(Ordering::Equal), [INFO] [stdout] 66 - Ordering::Greater => Some(Ordering::Greater), [INFO] [stdout] 67 - } [INFO] [stdout] 68 - } [INFO] [stdout] 61 + fn partial_cmp(&self, other: &Signer) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/signature.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | pub fn from_bytes(bytes: [u8; 64]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:330:82 [INFO] [stdout] | [INFO] [stdout] 330 | let (binding_factors, Rs) = compute_binding_factors_and_group_commitment(&message_hash, &signers); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `message_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:330:97 [INFO] [stdout] | [INFO] [stdout] 330 | let (binding_factors, Rs) = compute_binding_factors_and_group_commitment(&message_hash, &signers); [INFO] [stdout] | ^^^^^^^^ help: change this to: `signers` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:332:43 [INFO] [stdout] | [INFO] [stdout] 332 | let challenge = compute_challenge(&message_hash, &group_key, &R); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `message_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:332:58 [INFO] [stdout] | [INFO] [stdout] 332 | let challenge = compute_challenge(&message_hash, &group_key, &R); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `group_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'sa [INFO] [stdout] --> src/signature.rs:489:24 [INFO] [stdout] | [INFO] [stdout] 489 | pub fn get_signers<'sa>(&'sa mut self) -> &'sa Vec { [INFO] [stdout] | ^^^ ^^^ ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 489 - pub fn get_signers<'sa>(&'sa mut self) -> &'sa Vec { [INFO] [stdout] 489 + pub fn get_signers(&mut self) -> &Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:569:49 [INFO] [stdout] | [INFO] [stdout] 569 | let message_hash = compute_message_hash(&self.aggregator.context, &self.aggregator.message); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.aggregator.context` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:569:75 [INFO] [stdout] | [INFO] [stdout] 569 | let message_hash = compute_message_hash(&self.aggregator.context, &self.aggregator.message); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.aggregator.message` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/signature.rs:643:5 [INFO] [stdout] | [INFO] [stdout] 643 | pub fn verify(&self, group_key: &GroupKey, message_hash: &[u8; 64]) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:644:41 [INFO] [stdout] | [INFO] [stdout] 644 | let c_prime = compute_challenge(&message_hash, &group_key, &self.R); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `message_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/signature.rs:644:56 [INFO] [stdout] | [INFO] [stdout] 644 | let c_prime = compute_challenge(&message_hash, &group_key, &self.R); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `group_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `GroupKey` which implements the `Copy` trait [INFO] [stdout] --> src/signature.rs:981:63 [INFO] [stdout] | [INFO] [stdout] 981 | let mut aggregator = SignatureAggregator::new(params, group_key.clone(), &context[..], &message[..]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.49s [INFO] running `Command { std: "docker" "inspect" "62cca9c377c0b0634fac0bfca1047f333a6a40bb37cf9c5abd49c9907f3800b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "62cca9c377c0b0634fac0bfca1047f333a6a40bb37cf9c5abd49c9907f3800b9", kill_on_drop: false }` [INFO] [stdout] 62cca9c377c0b0634fac0bfca1047f333a6a40bb37cf9c5abd49c9907f3800b9