Skip to content

feat: mvlookup arguments (#1) #2

feat: mvlookup arguments (#1)

feat: mvlookup arguments (#1) #2

Triggered via push October 19, 2023 11:06
Status Success
Total duration 1m 20s
Artifacts

docs-ghpages.yml

on: push
Fit to window
Zoom out
Zoom in

Annotations

115 warnings
deploy
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1, actions-rs/cargo@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
deploy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
deploy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
deploy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
deploy
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
deploy
virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
deploy: halo2_proofs/src/lib.rs#L12
unused `#[macro_use]` import
deploy: halo2_proofs/src/plonk/evaluation.rs#L2
unused import: `crate::plonk::lookup::prover::Committed`
deploy: halo2_proofs/src/plonk/evaluation.rs#L3
unused import: `crate::plonk::permutation::Argument`
deploy: halo2_proofs/src/plonk/evaluation.rs#L5
unused imports: `AdviceQuery`, `FixedQuery`, `InstanceQuery`
deploy: halo2_proofs/src/plonk/mv_lookup/prover.rs#L2
unused import: `ChallengeGamma`
deploy: halo2_proofs/src/plonk/mv_lookup/prover.rs#L11
unused import: `ExtendedLagrangeCoeff`
deploy: halo2_proofs/src/plonk/mv_lookup/prover.rs#L16
unused import: `blake2b_simd::Hash`
deploy: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
unused import: `PrimeFieldBits`
deploy: halo2_proofs/src/plonk/mv_lookup/prover.rs#L22
unused import: `maybe_rayon::current_num_threads`
this function has too many arguments (11/7): halo2_proofs/src/plonk/mv_lookup/verifier.rs#L82
warning: this function has too many arguments (11/7) --> halo2_proofs/src/plonk/mv_lookup/verifier.rs:82:5 | 82 | / pub(in crate::plonk) fn expressions<'a>( 83 | | &'a self, 84 | | l_0: C::Scalar, 85 | | l_last: C::Scalar, ... | 93 | | challenges: &[C::Scalar], 94 | | ) -> impl Iterator<Item = C::Scalar> + 'a { | |_____________________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
casting to the same type is unnecessary (`u64` -> `u64`): halo2_proofs/src/plonk/mv_lookup/prover.rs#L137
warning: casting to the same type is unnecessary (`u64` -> `u64`) --> halo2_proofs/src/plonk/mv_lookup/prover.rs:137:35 | 137 | .map(|mi| F::from(mi.load(Ordering::Relaxed) as u64)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `mi.load(Ordering::Relaxed)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
this function has too many arguments (11/7): halo2_proofs/src/plonk/mv_lookup/prover.rs#L52
warning: this function has too many arguments (11/7) --> halo2_proofs/src/plonk/mv_lookup/prover.rs:52:5 | 52 | / pub(in crate::plonk) fn prepare< 53 | | 'a, 54 | | 'params: 'a, 55 | | C, ... | 71 | | transcript: &mut T, 72 | | ) -> Result<Prepared<C>, Error> | |___________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments = note: `-W clippy::too-many-arguments` implied by `-W clippy::all`
casting to the same type is unnecessary (`usize` -> `usize`): halo2_proofs/src/plonk/lookup/prover.rs#L578
warning: casting to the same type is unnecessary (`usize` -> `usize`) --> halo2_proofs/src/plonk/lookup/prover.rs:578:35 | 578 | permuted_table_coeffs[repeated_input_rows.pop().unwrap() as usize] = *coeff; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `repeated_input_rows.pop().unwrap()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast = note: `-W clippy::unnecessary-cast` implied by `-W clippy::all`
the borrowed expression implements the required traits: halo2_proofs/src/plonk/evaluation.rs#L417
warning: the borrowed expression implements the required traits --> halo2_proofs/src/plonk/evaluation.rs:417:68 | 417 | let mut beta_term = extended_omega.pow_vartime(&[start as u64, 0, 0, 0]); | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `[start as u64, 0, 0, 0]` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `-W clippy::needless-borrow` implied by `-W clippy::all`
the loop variable `i` is only used to index `args`: halo2_proofs/src/plonk/circuit.rs#L1819
warning: the loop variable `i` is only used to index `args` --> halo2_proofs/src/plonk/circuit.rs:1819:26 | 1819 | for i in 0..args.len() { | ^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop = note: `-W clippy::needless-range-loop` implied by `-W clippy::all` help: consider using an iterator | 1819 | for <item> in &mut args { | ~~~~~~ ~~~~~~~~~
avoid using `collect()` when not needed: halo2_proofs/src/plonk/circuit.rs#L1760
warning: avoid using `collect()` when not needed --> halo2_proofs/src/plonk/circuit.rs:1760:14 | 1760 | .collect(); | ^^^^^^^ ... 1763 | table_map.into_iter().unzip(); | --------------------- the iterator could be used here instead | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect = note: `-W clippy::needless-collect` implied by `-W clippy::all` help: use the original Iterator instead of collecting it and then producing a new one | 1749 ~ 1750 | 1751 | let (input_expressions, table_expressions): (Vec<_>, Vec<_>) = 1752 ~ table_map(&mut cells) 1753 + .into_iter() 1754 + .map(|(input, table)| { 1755 + if input.contains_simple_selector() { 1756 + panic!("expression containing simple selector supplied to lookup argument"); 1757 + } 1758 + 1759 + let table = cells.query_fixed(table.inner(), Rotation::cur()); 1760 + 1761 + (input, table) 1762 ~ }).unzip(); |
associated function `queries` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L171
warning: associated function `queries` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:171:29 | 171 | pub(in crate::plonk) fn queries<'r, M: MSM<C> + 'r>( | ^^^^^^^
associated function `expressions` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L94
warning: associated function `expressions` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:94:29 | 94 | pub(in crate::plonk) fn expressions<'a>( | ^^^^^^^^^^^
associated function `evaluate` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L71
warning: associated function `evaluate` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:71:19 | 71 | pub(crate) fn evaluate<E: EncodedChallenge<C>, T: TranscriptRead<C, E>>( | ^^^^^^^^
associated function `read_product_commitment` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L54
warning: associated function `read_product_commitment` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:54:29 | 54 | pub(in crate::plonk) fn read_product_commitment< | ^^^^^^^^^^^^^^^^^^^^^^^
associated function `read_permuted_commitments` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L35
warning: associated function `read_permuted_commitments` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:35:29 | 35 | pub(in crate::plonk) fn read_permuted_commitments< | ^^^^^^^^^^^^^^^^^^^^^^^^^
struct `Evaluated` is never constructed: halo2_proofs/src/plonk/lookup/verifier.rs#L25
warning: struct `Evaluated` is never constructed --> halo2_proofs/src/plonk/lookup/verifier.rs:25:12 | 25 | pub struct Evaluated<C: CurveAffine> { | ^^^^^^^^^
struct `Committed` is never constructed: halo2_proofs/src/plonk/lookup/verifier.rs#L20
warning: struct `Committed` is never constructed --> halo2_proofs/src/plonk/lookup/verifier.rs:20:12 | 20 | pub struct Committed<C: CurveAffine> { | ^^^^^^^^^
struct `PermutationCommitments` is never constructed: halo2_proofs/src/plonk/lookup/verifier.rs#L15
warning: struct `PermutationCommitments` is never constructed --> halo2_proofs/src/plonk/lookup/verifier.rs:15:12 | 15 | pub struct PermutationCommitments<C: CurveAffine> { | ^^^^^^^^^^^^^^^^^^^^^^
associated function `open` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L346
warning: associated function `open` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:346:29 | 346 | pub(in crate::plonk) fn open<'a>( | ^^^^
associated function `evaluate` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L314
warning: associated function `evaluate` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:314:29 | 314 | pub(in crate::plonk) fn evaluate<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>( | ^^^^^^^^
associated function `commit_product` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L172
warning: associated function `commit_product` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:172:29 | 172 | pub(in crate::plonk) fn commit_product< | ^^^^^^^^^^^^^^
associated function `commit_permuted` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L69
warning: associated function `commit_permuted` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:69:29 | 69 | pub(in crate::plonk) fn commit_permuted< | ^^^^^^^^^^^^^^^
function `permute_expression_pair_par` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L427
warning: function `permute_expression_pair_par` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:427:4 | 427 | fn permute_expression_pair_par<'params, C: CurveAffine, P: Params<'params, C>, R: RngCore>( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
function `permute_expression_pair` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L396
warning: function `permute_expression_pair` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:396:4 | 396 | fn permute_expression_pair<'params, C: CurveAffine, P: Params<'params, C>, R: RngCore>( | ^^^^^^^^^^^^^^^^^^^^^^^
struct `Evaluated` is never constructed: halo2_proofs/src/plonk/lookup/prover.rs#L54
warning: struct `Evaluated` is never constructed --> halo2_proofs/src/plonk/lookup/prover.rs:54:29 | 54 | pub(in crate::plonk) struct Evaluated<C: CurveAffine> { | ^^^^^^^^^
fields `permuted_input_poly`, `permuted_input_blind`, `permuted_table_poly`, `permuted_table_blind`, `product_poly` and `product_blind` are never read: halo2_proofs/src/plonk/lookup/prover.rs#L46
warning: fields `permuted_input_poly`, `permuted_input_blind`, `permuted_table_poly`, `permuted_table_blind`, `product_poly` and `product_blind` are never read --> halo2_proofs/src/plonk/lookup/prover.rs:46:26 | 45 | pub(in crate::plonk) struct Committed<C: CurveAffine> { | --------- fields in this struct 46 | pub(in crate::plonk) permuted_input_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 47 | permuted_input_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ 48 | pub(in crate::plonk) permuted_table_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 49 | permuted_table_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ 50 | pub(in crate::plonk) product_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^ 51 | product_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^ | = note: `Committed` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
multiple fields are never read: halo2_proofs/src/plonk/lookup/prover.rs#L34
warning: multiple fields are never read --> halo2_proofs/src/plonk/lookup/prover.rs:34:5 | 33 | pub(in crate::plonk) struct Permuted<C: CurveAffine> { | -------- fields in this struct 34 | compressed_input_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 35 | permuted_input_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^ 36 | permuted_input_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 37 | permuted_input_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ 38 | compressed_table_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 39 | permuted_table_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^ 40 | permuted_table_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 41 | permuted_table_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ | = note: `Permuted` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
associated function `name` is never used: halo2_proofs/src/plonk/lookup.rs#L96
warning: associated function `name` is never used --> halo2_proofs/src/plonk/lookup.rs:96:12 | 96 | pub fn name(&self) -> &str { | ^^^^
associated function `table_expressions` is never used: halo2_proofs/src/plonk/lookup.rs#L91
warning: associated function `table_expressions` is never used --> halo2_proofs/src/plonk/lookup.rs:91:12 | 91 | pub fn table_expressions(&self) -> &Vec<Expression<F>> { | ^^^^^^^^^^^^^^^^^
associated function `input_expressions` is never used: halo2_proofs/src/plonk/lookup.rs#L86
warning: associated function `input_expressions` is never used --> halo2_proofs/src/plonk/lookup.rs:86:12 | 86 | pub fn input_expressions(&self) -> &Vec<Expression<F>> { | ^^^^^^^^^^^^^^^^^
associated function `required_degree` is never used: halo2_proofs/src/plonk/lookup.rs#L37
warning: associated function `required_degree` is never used --> halo2_proofs/src/plonk/lookup.rs:37:19 | 37 | pub(crate) fn required_degree(&self) -> usize { | ^^^^^^^^^^^^^^^
associated function `new` is never used: halo2_proofs/src/plonk/lookup.rs#L28
warning: associated function `new` is never used --> halo2_proofs/src/plonk/lookup.rs:28:12 | 28 | pub fn new<S: AsRef<str>>(name: S, table_map: Vec<(Expression<F>, Expression<F>)>) -> Self { | ^^^
field `name` is never read: halo2_proofs/src/plonk/lookup.rs#L10
warning: field `name` is never read --> halo2_proofs/src/plonk/lookup.rs:10:16 | 9 | pub struct Argument<F: Field> { | -------- field in this struct 10 | pub(crate) name: String, | ^^^^ | = note: `Argument` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis = note: `#[warn(dead_code)]` on by default
unused variable: `name`: halo2_proofs/src/plonk/circuit.rs#L1847
warning: unused variable: `name` --> halo2_proofs/src/plonk/circuit.rs:1847:9 | 1847 | name: &'static str, | ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
unused variable: `name`: halo2_proofs/src/plonk/circuit.rs#L1745
warning: unused variable: `name` --> halo2_proofs/src/plonk/circuit.rs:1745:9 | 1745 | name: &'static str, | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` | = note: `#[warn(unused_variables)]` on by default
unused import: `BitViewSized`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
warning: unused import: `BitViewSized` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:17:10 | 17 | use ff::{BitViewSized, PrimeField, PrimeFieldBits, WithSmallOrderMulGroup}; | ^^^^^^^^^^^^
unused import: `PrimeField`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
warning: unused import: `PrimeField` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:17:24 | 17 | use ff::{BitViewSized, PrimeField, PrimeFieldBits, WithSmallOrderMulGroup}; | ^^^^^^^^^^
unused import: `Expression`: halo2_proofs/src/plonk/prover.rs#L15
warning: unused import: `Expression` --> halo2_proofs/src/plonk/prover.rs:15:36 | 15 | ChallengeX, ChallengeY, Error, Expression, ProvingKey, | ^^^^^^^^^^
unused import: `ChallengeGamma`: halo2_proofs/src/plonk/mv_lookup/verifier.rs#L4
warning: unused import: `ChallengeGamma` --> halo2_proofs/src/plonk/mv_lookup/verifier.rs:4:41 | 4 | circuit::Expression, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX, | ^^^^^^^^^^^^^^
unused import: `std::sync::RwLock`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L120
warning: unused import: `std::sync::RwLock` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:120:17 | 120 | use std::sync::RwLock; | ^^^^^^^^^^^^^^^^^
unused imports: `any::TypeId`, `convert::TryInto`, `num::ParseIntError`, `ops::Index`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L25
warning: unused imports: `any::TypeId`, `convert::TryInto`, `num::ParseIntError`, `ops::Index` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:25:11 | 25 | use std::{any::TypeId, convert::TryInto, num::ParseIntError, ops::Index}; | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
unused imports: `BTreeSet`, `HashSet`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L24
warning: unused imports: `BTreeSet`, `HashSet` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:24:24 | 24 | use std::collections::{BTreeSet, HashSet}; | ^^^^^^^^ ^^^^^^^
unused import: `maybe_rayon::current_num_threads`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L22
warning: unused import: `maybe_rayon::current_num_threads` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:22:5 | 22 | use maybe_rayon::current_num_threads; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused import: `PrimeFieldBits`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
warning: unused import: `PrimeFieldBits` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:17:36 | 17 | use ff::{BitViewSized, PrimeField, PrimeFieldBits, WithSmallOrderMulGroup}; | ^^^^^^^^^^^^^^
unused import: `blake2b_simd::Hash`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L16
warning: unused import: `blake2b_simd::Hash` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:16:5 | 16 | use blake2b_simd::Hash; | ^^^^^^^^^^^^^^^^^^
unused import: `ExtendedLagrangeCoeff`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L11
warning: unused import: `ExtendedLagrangeCoeff` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:11:34 | 11 | Coeff, EvaluationDomain, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial, ProverQuery, | ^^^^^^^^^^^^^^^^^^^^^
unused import: `ChallengeGamma`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L2
warning: unused import: `ChallengeGamma` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:2:41 | 2 | circuit::Expression, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX, Error, | ^^^^^^^^^^^^^^
unused imports: `AdviceQuery`, `FixedQuery`, `InstanceQuery`: halo2_proofs/src/plonk/evaluation.rs#L5
warning: unused imports: `AdviceQuery`, `FixedQuery`, `InstanceQuery` --> halo2_proofs/src/plonk/evaluation.rs:5:29 | 5 | mv_lookup, permutation, AdviceQuery, Any, FixedQuery, InstanceQuery, ProvingKey, | ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^
unused import: `crate::plonk::permutation::Argument`: halo2_proofs/src/plonk/evaluation.rs#L3
warning: unused import: `crate::plonk::permutation::Argument` --> halo2_proofs/src/plonk/evaluation.rs:3:5 | 3 | use crate::plonk::permutation::Argument; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused import: `crate::plonk::lookup::prover::Committed`: halo2_proofs/src/plonk/evaluation.rs#L2
warning: unused import: `crate::plonk::lookup::prover::Committed` --> halo2_proofs/src/plonk/evaluation.rs:2:5 | 2 | use crate::plonk::lookup::prover::Committed; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused `#[macro_use]` import: halo2_proofs/src/lib.rs#L12
warning: unused `#[macro_use]` import --> halo2_proofs/src/lib.rs:12:1 | 12 | #[macro_use] | ^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type: halo2_proofs/examples/simple-lookup.rs#L299
warning: using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type --> halo2_proofs/examples/simple-lookup.rs:299:33 | 299 | let f = std::fs::File::open(path.clone()).unwrap(); | ^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref help: try dereferencing it | 299 | let f = std::fs::File::open(&(*path).clone()).unwrap(); | ~~~~~~~~~~~~~~~~ help: or try being explicit if you are sure, that you want to clone a reference | 299 | let f = std::fs::File::open(<&str>::clone(path)).unwrap(); | ~~~~~~~~~~~~~~~~~~~
using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type: halo2_proofs/examples/simple-lookup.rs#L269
warning: using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type --> halo2_proofs/examples/simple-lookup.rs:269:33 | 269 | let f = std::fs::File::open(path.clone()).unwrap(); | ^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref = note: `-W clippy::clone-double-ref` implied by `-W clippy::all` help: try dereferencing it | 269 | let f = std::fs::File::open(&(*path).clone()).unwrap(); | ~~~~~~~~~~~~~~~~ help: or try being explicit if you are sure, that you want to clone a reference | 269 | let f = std::fs::File::open(<&str>::clone(path)).unwrap(); | ~~~~~~~~~~~~~~~~~~~
redundant clone: halo2_proofs/examples/simple-lookup.rs#L103
warning: redundant clone --> halo2_proofs/examples/simple-lookup.rs:103:86 | 103 | let constraint = diff.clone() * (Expression::Constant(F::ZERO) - diff.clone()); | ^^^^^^^^ help: remove this | note: this value is dropped without further use --> halo2_proofs/examples/simple-lookup.rs:103:82 | 103 | let constraint = diff.clone() * (Expression::Constant(F::ZERO) - diff.clone()); | ^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone = note: `-W clippy::redundant-clone` implied by `-W clippy::all`
this let-binding has unit value: halo2_proofs/examples/simple-lookup.rs#L70
warning: this let-binding has unit value --> halo2_proofs/examples/simple-lookup.rs:70:13 | 70 | / let _ = meta.lookup("", |cs| { 71 | | let qlookup = cs.query_selector(config.qlookup); 72 | | let not_qlookup = Expression::Constant(F::ONE) - qlookup.clone(); 73 | | let (default_x, default_y): (F, F) = (F::from(0), F::from(0)); ... | 85 | | ] 86 | | }); | |_______________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value = note: `-W clippy::let-unit-value` implied by `-W clippy::all` help: omit the `let` binding | 70 ~ meta.lookup("", |cs| { 71 + let qlookup = cs.query_selector(config.qlookup); 72 + let not_qlookup = Expression::Constant(F::ONE) - qlookup.clone(); 73 + let (default_x, default_y): (F, F) = (F::from(0), F::from(0)); 74 + vec![ 75 + ( 76 + qlookup.clone() * cs.query_advice(config.advice, Rotation(0)) 77 + + not_qlookup.clone() * default_x, 78 + config.table_input, 79 + ), 80 + ( 81 + qlookup * cs.query_advice(config.other_advice, Rotation(0)) 82 + + not_qlookup * default_y, 83 + config.table_output, 84 + ), 85 + ] 86 + }); |
this function has too many arguments (11/7): halo2_proofs/src/plonk/mv_lookup/verifier.rs#L82
warning: this function has too many arguments (11/7) --> halo2_proofs/src/plonk/mv_lookup/verifier.rs:82:5 | 82 | / pub(in crate::plonk) fn expressions<'a>( 83 | | &'a self, 84 | | l_0: C::Scalar, 85 | | l_last: C::Scalar, ... | 93 | | challenges: &[C::Scalar], 94 | | ) -> impl Iterator<Item = C::Scalar> + 'a { | |_____________________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
casting to the same type is unnecessary (`u64` -> `u64`): halo2_proofs/src/plonk/mv_lookup/prover.rs#L137
warning: casting to the same type is unnecessary (`u64` -> `u64`) --> halo2_proofs/src/plonk/mv_lookup/prover.rs:137:35 | 137 | .map(|mi| F::from(mi.load(Ordering::Relaxed) as u64)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `mi.load(Ordering::Relaxed)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
this function has too many arguments (11/7): halo2_proofs/src/plonk/mv_lookup/prover.rs#L52
warning: this function has too many arguments (11/7) --> halo2_proofs/src/plonk/mv_lookup/prover.rs:52:5 | 52 | / pub(in crate::plonk) fn prepare< 53 | | 'a, 54 | | 'params: 'a, 55 | | C, ... | 71 | | transcript: &mut T, 72 | | ) -> Result<Prepared<C>, Error> | |___________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments = note: `-W clippy::too-many-arguments` implied by `-W clippy::all`
casting to the same type is unnecessary (`usize` -> `usize`): halo2_proofs/src/plonk/lookup/prover.rs#L578
warning: casting to the same type is unnecessary (`usize` -> `usize`) --> halo2_proofs/src/plonk/lookup/prover.rs:578:35 | 578 | permuted_table_coeffs[repeated_input_rows.pop().unwrap() as usize] = *coeff; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `repeated_input_rows.pop().unwrap()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast = note: `-W clippy::unnecessary-cast` implied by `-W clippy::all`
the borrowed expression implements the required traits: halo2_proofs/src/plonk/evaluation.rs#L417
warning: the borrowed expression implements the required traits --> halo2_proofs/src/plonk/evaluation.rs:417:68 | 417 | let mut beta_term = extended_omega.pow_vartime(&[start as u64, 0, 0, 0]); | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `[start as u64, 0, 0, 0]` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `-W clippy::needless-borrow` implied by `-W clippy::all`
the loop variable `i` is only used to index `args`: halo2_proofs/src/plonk/circuit.rs#L1819
warning: the loop variable `i` is only used to index `args` --> halo2_proofs/src/plonk/circuit.rs:1819:26 | 1819 | for i in 0..args.len() { | ^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop = note: `-W clippy::needless-range-loop` implied by `-W clippy::all` help: consider using an iterator | 1819 | for <item> in &mut args { | ~~~~~~ ~~~~~~~~~
avoid using `collect()` when not needed: halo2_proofs/src/plonk/circuit.rs#L1760
warning: avoid using `collect()` when not needed --> halo2_proofs/src/plonk/circuit.rs:1760:14 | 1760 | .collect(); | ^^^^^^^ ... 1763 | table_map.into_iter().unzip(); | --------------------- the iterator could be used here instead | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect = note: `-W clippy::needless-collect` implied by `-W clippy::all` help: use the original Iterator instead of collecting it and then producing a new one | 1749 ~ 1750 | 1751 | let (input_expressions, table_expressions): (Vec<_>, Vec<_>) = 1752 ~ table_map(&mut cells) 1753 + .into_iter() 1754 + .map(|(input, table)| { 1755 + if input.contains_simple_selector() { 1756 + panic!("expression containing simple selector supplied to lookup argument"); 1757 + } 1758 + 1759 + let table = cells.query_fixed(table.inner(), Rotation::cur()); 1760 + 1761 + (input, table) 1762 ~ }).unzip(); |
associated function `queries` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L171
warning: associated function `queries` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:171:29 | 171 | pub(in crate::plonk) fn queries<'r, M: MSM<C> + 'r>( | ^^^^^^^
associated function `expressions` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L94
warning: associated function `expressions` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:94:29 | 94 | pub(in crate::plonk) fn expressions<'a>( | ^^^^^^^^^^^
associated function `evaluate` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L71
warning: associated function `evaluate` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:71:19 | 71 | pub(crate) fn evaluate<E: EncodedChallenge<C>, T: TranscriptRead<C, E>>( | ^^^^^^^^
associated function `read_product_commitment` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L54
warning: associated function `read_product_commitment` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:54:29 | 54 | pub(in crate::plonk) fn read_product_commitment< | ^^^^^^^^^^^^^^^^^^^^^^^
associated function `read_permuted_commitments` is never used: halo2_proofs/src/plonk/lookup/verifier.rs#L35
warning: associated function `read_permuted_commitments` is never used --> halo2_proofs/src/plonk/lookup/verifier.rs:35:29 | 35 | pub(in crate::plonk) fn read_permuted_commitments< | ^^^^^^^^^^^^^^^^^^^^^^^^^
struct `Evaluated` is never constructed: halo2_proofs/src/plonk/lookup/verifier.rs#L25
warning: struct `Evaluated` is never constructed --> halo2_proofs/src/plonk/lookup/verifier.rs:25:12 | 25 | pub struct Evaluated<C: CurveAffine> { | ^^^^^^^^^
struct `Committed` is never constructed: halo2_proofs/src/plonk/lookup/verifier.rs#L20
warning: struct `Committed` is never constructed --> halo2_proofs/src/plonk/lookup/verifier.rs:20:12 | 20 | pub struct Committed<C: CurveAffine> { | ^^^^^^^^^
struct `PermutationCommitments` is never constructed: halo2_proofs/src/plonk/lookup/verifier.rs#L15
warning: struct `PermutationCommitments` is never constructed --> halo2_proofs/src/plonk/lookup/verifier.rs:15:12 | 15 | pub struct PermutationCommitments<C: CurveAffine> { | ^^^^^^^^^^^^^^^^^^^^^^
associated function `open` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L346
warning: associated function `open` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:346:29 | 346 | pub(in crate::plonk) fn open<'a>( | ^^^^
associated function `evaluate` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L314
warning: associated function `evaluate` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:314:29 | 314 | pub(in crate::plonk) fn evaluate<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>( | ^^^^^^^^
associated function `commit_product` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L172
warning: associated function `commit_product` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:172:29 | 172 | pub(in crate::plonk) fn commit_product< | ^^^^^^^^^^^^^^
associated function `commit_permuted` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L69
warning: associated function `commit_permuted` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:69:29 | 69 | pub(in crate::plonk) fn commit_permuted< | ^^^^^^^^^^^^^^^
function `permute_expression_pair_par` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L427
warning: function `permute_expression_pair_par` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:427:4 | 427 | fn permute_expression_pair_par<'params, C: CurveAffine, P: Params<'params, C>, R: RngCore>( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
function `permute_expression_pair` is never used: halo2_proofs/src/plonk/lookup/prover.rs#L396
warning: function `permute_expression_pair` is never used --> halo2_proofs/src/plonk/lookup/prover.rs:396:4 | 396 | fn permute_expression_pair<'params, C: CurveAffine, P: Params<'params, C>, R: RngCore>( | ^^^^^^^^^^^^^^^^^^^^^^^
struct `Evaluated` is never constructed: halo2_proofs/src/plonk/lookup/prover.rs#L54
warning: struct `Evaluated` is never constructed --> halo2_proofs/src/plonk/lookup/prover.rs:54:29 | 54 | pub(in crate::plonk) struct Evaluated<C: CurveAffine> { | ^^^^^^^^^
fields `permuted_input_poly`, `permuted_input_blind`, `permuted_table_poly`, `permuted_table_blind`, `product_poly` and `product_blind` are never read: halo2_proofs/src/plonk/lookup/prover.rs#L46
warning: fields `permuted_input_poly`, `permuted_input_blind`, `permuted_table_poly`, `permuted_table_blind`, `product_poly` and `product_blind` are never read --> halo2_proofs/src/plonk/lookup/prover.rs:46:26 | 45 | pub(in crate::plonk) struct Committed<C: CurveAffine> { | --------- fields in this struct 46 | pub(in crate::plonk) permuted_input_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 47 | permuted_input_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ 48 | pub(in crate::plonk) permuted_table_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 49 | permuted_table_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ 50 | pub(in crate::plonk) product_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^ 51 | product_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^ | = note: `Committed` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
multiple fields are never read: halo2_proofs/src/plonk/lookup/prover.rs#L34
warning: multiple fields are never read --> halo2_proofs/src/plonk/lookup/prover.rs:34:5 | 33 | pub(in crate::plonk) struct Permuted<C: CurveAffine> { | -------- fields in this struct 34 | compressed_input_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 35 | permuted_input_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^ 36 | permuted_input_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 37 | permuted_input_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ 38 | compressed_table_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 39 | permuted_table_expression: Polynomial<C::Scalar, LagrangeCoeff>, | ^^^^^^^^^^^^^^^^^^^^^^^^^ 40 | permuted_table_poly: Polynomial<C::Scalar, Coeff>, | ^^^^^^^^^^^^^^^^^^^ 41 | permuted_table_blind: Blind<C::Scalar>, | ^^^^^^^^^^^^^^^^^^^^ | = note: `Permuted` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
associated function `name` is never used: halo2_proofs/src/plonk/lookup.rs#L96
warning: associated function `name` is never used --> halo2_proofs/src/plonk/lookup.rs:96:12 | 96 | pub fn name(&self) -> &str { | ^^^^
associated function `table_expressions` is never used: halo2_proofs/src/plonk/lookup.rs#L91
warning: associated function `table_expressions` is never used --> halo2_proofs/src/plonk/lookup.rs:91:12 | 91 | pub fn table_expressions(&self) -> &Vec<Expression<F>> { | ^^^^^^^^^^^^^^^^^
associated function `input_expressions` is never used: halo2_proofs/src/plonk/lookup.rs#L86
warning: associated function `input_expressions` is never used --> halo2_proofs/src/plonk/lookup.rs:86:12 | 86 | pub fn input_expressions(&self) -> &Vec<Expression<F>> { | ^^^^^^^^^^^^^^^^^
associated function `required_degree` is never used: halo2_proofs/src/plonk/lookup.rs#L37
warning: associated function `required_degree` is never used --> halo2_proofs/src/plonk/lookup.rs:37:19 | 37 | pub(crate) fn required_degree(&self) -> usize { | ^^^^^^^^^^^^^^^
associated function `new` is never used: halo2_proofs/src/plonk/lookup.rs#L28
warning: associated function `new` is never used --> halo2_proofs/src/plonk/lookup.rs:28:12 | 28 | pub fn new<S: AsRef<str>>(name: S, table_map: Vec<(Expression<F>, Expression<F>)>) -> Self { | ^^^
field `name` is never read: halo2_proofs/src/plonk/lookup.rs#L10
warning: field `name` is never read --> halo2_proofs/src/plonk/lookup.rs:10:16 | 9 | pub struct Argument<F: Field> { | -------- field in this struct 10 | pub(crate) name: String, | ^^^^ | = note: `Argument` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis = note: `#[warn(dead_code)]` on by default
unused variable: `name`: halo2_proofs/src/plonk/circuit.rs#L1847
warning: unused variable: `name` --> halo2_proofs/src/plonk/circuit.rs:1847:9 | 1847 | name: &'static str, | ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
unused variable: `name`: halo2_proofs/src/plonk/circuit.rs#L1745
warning: unused variable: `name` --> halo2_proofs/src/plonk/circuit.rs:1745:9 | 1745 | name: &'static str, | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` | = note: `#[warn(unused_variables)]` on by default
unused import: `BitViewSized`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
warning: unused import: `BitViewSized` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:17:10 | 17 | use ff::{BitViewSized, PrimeField, PrimeFieldBits, WithSmallOrderMulGroup}; | ^^^^^^^^^^^^
unused import: `PrimeField`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
warning: unused import: `PrimeField` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:17:24 | 17 | use ff::{BitViewSized, PrimeField, PrimeFieldBits, WithSmallOrderMulGroup}; | ^^^^^^^^^^
unused import: `Expression`: halo2_proofs/src/plonk/prover.rs#L15
warning: unused import: `Expression` --> halo2_proofs/src/plonk/prover.rs:15:36 | 15 | ChallengeX, ChallengeY, Error, Expression, ProvingKey, | ^^^^^^^^^^
unused import: `ChallengeGamma`: halo2_proofs/src/plonk/mv_lookup/verifier.rs#L4
warning: unused import: `ChallengeGamma` --> halo2_proofs/src/plonk/mv_lookup/verifier.rs:4:41 | 4 | circuit::Expression, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX, | ^^^^^^^^^^^^^^
unused import: `std::sync::RwLock`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L120
warning: unused import: `std::sync::RwLock` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:120:17 | 120 | use std::sync::RwLock; | ^^^^^^^^^^^^^^^^^
unused imports: `any::TypeId`, `convert::TryInto`, `num::ParseIntError`, `ops::Index`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L25
warning: unused imports: `any::TypeId`, `convert::TryInto`, `num::ParseIntError`, `ops::Index` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:25:11 | 25 | use std::{any::TypeId, convert::TryInto, num::ParseIntError, ops::Index}; | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
unused imports: `BTreeSet`, `HashSet`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L24
warning: unused imports: `BTreeSet`, `HashSet` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:24:24 | 24 | use std::collections::{BTreeSet, HashSet}; | ^^^^^^^^ ^^^^^^^
unused import: `maybe_rayon::current_num_threads`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L22
warning: unused import: `maybe_rayon::current_num_threads` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:22:5 | 22 | use maybe_rayon::current_num_threads; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused import: `PrimeFieldBits`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L17
warning: unused import: `PrimeFieldBits` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:17:36 | 17 | use ff::{BitViewSized, PrimeField, PrimeFieldBits, WithSmallOrderMulGroup}; | ^^^^^^^^^^^^^^
unused import: `blake2b_simd::Hash`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L16
warning: unused import: `blake2b_simd::Hash` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:16:5 | 16 | use blake2b_simd::Hash; | ^^^^^^^^^^^^^^^^^^
unused import: `ExtendedLagrangeCoeff`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L11
warning: unused import: `ExtendedLagrangeCoeff` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:11:34 | 11 | Coeff, EvaluationDomain, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial, ProverQuery, | ^^^^^^^^^^^^^^^^^^^^^
unused import: `ChallengeGamma`: halo2_proofs/src/plonk/mv_lookup/prover.rs#L2
warning: unused import: `ChallengeGamma` --> halo2_proofs/src/plonk/mv_lookup/prover.rs:2:41 | 2 | circuit::Expression, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX, Error, | ^^^^^^^^^^^^^^
unused imports: `AdviceQuery`, `FixedQuery`, `InstanceQuery`: halo2_proofs/src/plonk/evaluation.rs#L5
warning: unused imports: `AdviceQuery`, `FixedQuery`, `InstanceQuery` --> halo2_proofs/src/plonk/evaluation.rs:5:29 | 5 | mv_lookup, permutation, AdviceQuery, Any, FixedQuery, InstanceQuery, ProvingKey, | ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^
unused import: `crate::plonk::permutation::Argument`: halo2_proofs/src/plonk/evaluation.rs#L3
warning: unused import: `crate::plonk::permutation::Argument` --> halo2_proofs/src/plonk/evaluation.rs:3:5 | 3 | use crate::plonk::permutation::Argument; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused import: `crate::plonk::lookup::prover::Committed`: halo2_proofs/src/plonk/evaluation.rs#L2
warning: unused import: `crate::plonk::lookup::prover::Committed` --> halo2_proofs/src/plonk/evaluation.rs:2:5 | 2 | use crate::plonk::lookup::prover::Committed; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unused `#[macro_use]` import: halo2_proofs/src/lib.rs#L12
warning: unused `#[macro_use]` import --> halo2_proofs/src/lib.rs:12:1 | 12 | #[macro_use] | ^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default