From dbab0e9aa9477cda8151fa3ff226dc4fb339aff9 Mon Sep 17 00:00:00 2001 From: Augusto Hack Date: Thu, 22 Feb 2024 05:55:02 +0100 Subject: [PATCH] fix: clippy warnings (#280) --- CHANGELOG.md | 2 ++ Cargo.toml | 4 ++-- benches/smt.rs | 1 + benches/store.rs | 11 +++++++---- src/dsa/rpo_falcon512/error.rs | 3 ++- src/dsa/rpo_falcon512/ffi.rs | 3 ++- src/dsa/rpo_falcon512/keys.rs | 8 ++++---- src/dsa/rpo_falcon512/mod.rs | 5 +---- src/dsa/rpo_falcon512/polynomial.rs | 4 +++- src/dsa/rpo_falcon512/signature.rs | 12 +++++++----- src/hash/blake/mod.rs | 11 ++++++----- src/hash/blake/tests.rs | 5 +++-- src/hash/rescue/arch/mod.rs | 12 ++++++------ src/hash/rescue/mds/freq.rs | 3 ++- src/hash/rescue/mod.rs | 3 ++- src/hash/rescue/rpo/digest.rs | 18 +++++++++++------- src/hash/rescue/rpo/mod.rs | 3 ++- src/hash/rescue/rpo/tests.rs | 11 ++++------- src/hash/rescue/rpx/digest.rs | 18 +++++++++++------- src/hash/rescue/rpx/mod.rs | 3 ++- src/hash/rescue/tests.rs | 3 ++- src/main.rs | 3 ++- src/merkle/empty_roots.rs | 3 ++- src/merkle/error.rs | 7 ++----- src/merkle/index.rs | 6 ++++-- src/merkle/merkle_tree.rs | 16 ++++++++++------ src/merkle/mmr/delta.rs | 3 ++- src/merkle/mmr/error.rs | 4 ++-- src/merkle/mmr/full.rs | 3 ++- src/merkle/mmr/inorder.rs | 3 ++- src/merkle/mmr/partial.rs | 14 +++++++------- src/merkle/mmr/peaks.rs | 6 ++---- src/merkle/mmr/tests.rs | 6 ++++-- src/merkle/mod.rs | 4 +++- src/merkle/partial_mt/mod.rs | 9 +++++---- src/merkle/partial_mt/tests.rs | 7 ++++--- src/merkle/path.rs | 10 ++++++---- src/merkle/smt/full/error.rs | 2 +- src/merkle/smt/full/leaf.rs | 7 ++++--- src/merkle/smt/full/mod.rs | 9 +++------ src/merkle/smt/full/proof.rs | 9 +++++---- src/merkle/smt/full/tests.rs | 8 +++----- src/merkle/smt/mod.rs | 6 +++--- src/merkle/smt/simple/mod.rs | 10 +++------- src/merkle/smt/simple/tests.rs | 2 +- src/merkle/store/mod.rs | 12 +++++++----- src/merkle/store/tests.rs | 12 ++++++------ src/rand/mod.rs | 1 + src/rand/rpo.rs | 5 ++--- src/utils/kv_map.rs | 7 ++++--- src/utils/mod.rs | 15 +++++++++------ 51 files changed, 193 insertions(+), 159 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00b8a27..799f7a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 0.8.1 (TBD) + ## 0.8.0 (2024-02-14) * Implemented the `PartialMmr` data structure (#195). diff --git a/Cargo.toml b/Cargo.toml index 86b399b..371f9d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "miden-crypto" -version = "0.8.0" +version = "0.8.1" description = "Miden Cryptographic primitives" authors = ["miden contributors"] readme = "README.md" license = "MIT" repository = "https://github.com/0xPolygonMiden/crypto" -documentation = "https://docs.rs/miden-crypto/0.8.0" +documentation = "https://docs.rs/miden-crypto/0.8.1" categories = ["cryptography", "no-std"] keywords = ["miden", "crypto", "hash", "merkle"] edition = "2021" diff --git a/benches/smt.rs b/benches/smt.rs index a8c410f..a5f2097 100644 --- a/benches/smt.rs +++ b/benches/smt.rs @@ -1,4 +1,5 @@ use core::mem::swap; + use criterion::{black_box, criterion_group, criterion_main, Criterion}; use miden_crypto::{ merkle::{LeafIndex, SimpleSmt}, diff --git a/benches/store.rs b/benches/store.rs index ca1bbcd..1d1e97a 100644 --- a/benches/store.rs +++ b/benches/store.rs @@ -1,9 +1,12 @@ use criterion::{black_box, criterion_group, criterion_main, BatchSize, BenchmarkId, Criterion}; -use miden_crypto::merkle::{ - DefaultMerkleStore as MerkleStore, LeafIndex, MerkleTree, NodeIndex, SimpleSmt, SMT_MAX_DEPTH, +use miden_crypto::{ + hash::rpo::RpoDigest, + merkle::{ + DefaultMerkleStore as MerkleStore, LeafIndex, MerkleTree, NodeIndex, SimpleSmt, + SMT_MAX_DEPTH, + }, + Felt, Word, }; -use miden_crypto::Word; -use miden_crypto::{hash::rpo::RpoDigest, Felt}; use rand_utils::{rand_array, rand_value}; /// Since MerkleTree can only be created when a power-of-two number of elements is used, the sample diff --git a/src/dsa/rpo_falcon512/error.rs b/src/dsa/rpo_falcon512/error.rs index 447a82c..3f5e6e9 100644 --- a/src/dsa/rpo_falcon512/error.rs +++ b/src/dsa/rpo_falcon512/error.rs @@ -1,6 +1,7 @@ -use super::{LOG_N, MODULUS, PK_LEN}; use core::fmt; +use super::{LOG_N, MODULUS, PK_LEN}; + #[derive(Clone, Debug, PartialEq, Eq)] pub enum FalconError { KeyGenerationFailed, diff --git a/src/dsa/rpo_falcon512/ffi.rs b/src/dsa/rpo_falcon512/ffi.rs index 4508ff2..f1797c1 100644 --- a/src/dsa/rpo_falcon512/ffi.rs +++ b/src/dsa/rpo_falcon512/ffi.rs @@ -96,9 +96,10 @@ pub struct Rpo128Context { #[cfg(all(test, feature = "std"))] mod tests { + use rand_utils::{rand_array, rand_value, rand_vector}; + use super::*; use crate::dsa::rpo_falcon512::{NONCE_LEN, PK_LEN, SIG_LEN, SK_LEN}; - use rand_utils::{rand_array, rand_value, rand_vector}; #[test] fn falcon_ffi() { diff --git a/src/dsa/rpo_falcon512/keys.rs b/src/dsa/rpo_falcon512/keys.rs index 60c4031..58ff0a5 100644 --- a/src/dsa/rpo_falcon512/keys.rs +++ b/src/dsa/rpo_falcon512/keys.rs @@ -1,11 +1,10 @@ +#[cfg(feature = "std")] +use super::{ffi, NonceBytes, NONCE_LEN, PK_LEN, SIG_LEN, SK_LEN}; use super::{ ByteReader, ByteWriter, Deserializable, DeserializationError, FalconError, Polynomial, PublicKeyBytes, Rpo256, SecretKeyBytes, Serializable, Signature, Word, }; -#[cfg(feature = "std")] -use super::{ffi, NonceBytes, NONCE_LEN, PK_LEN, SIG_LEN, SK_LEN}; - // PUBLIC KEY // ================================================================================================ @@ -182,9 +181,10 @@ impl Deserializable for KeyPair { #[cfg(all(test, feature = "std"))] mod tests { - use super::{super::Felt, KeyPair, NonceBytes, Word}; use rand_utils::{rand_array, rand_vector}; + use super::{super::Felt, KeyPair, NonceBytes, Word}; + #[test] fn test_falcon_verification() { // generate random keys diff --git a/src/dsa/rpo_falcon512/mod.rs b/src/dsa/rpo_falcon512/mod.rs index 7560bfb..35ac61a 100644 --- a/src/dsa/rpo_falcon512/mod.rs +++ b/src/dsa/rpo_falcon512/mod.rs @@ -1,9 +1,6 @@ use crate::{ hash::rpo::Rpo256, - utils::{ - collections::Vec, ByteReader, ByteWriter, Deserializable, DeserializationError, - Serializable, - }, + utils::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}, Felt, Word, ZERO, }; diff --git a/src/dsa/rpo_falcon512/polynomial.rs b/src/dsa/rpo_falcon512/polynomial.rs index 1d7c586..d76bd6f 100644 --- a/src/dsa/rpo_falcon512/polynomial.rs +++ b/src/dsa/rpo_falcon512/polynomial.rs @@ -1,6 +1,8 @@ -use super::{FalconError, Felt, Vec, LOG_N, MODULUS, MODULUS_MINUS_1_OVER_TWO, N, PK_LEN}; use core::ops::{Add, Mul, Sub}; +use super::{FalconError, Felt, LOG_N, MODULUS, MODULUS_MINUS_1_OVER_TWO, N, PK_LEN}; +use crate::utils::collections::*; + // FALCON POLYNOMIAL // ================================================================================================ diff --git a/src/dsa/rpo_falcon512/signature.rs b/src/dsa/rpo_falcon512/signature.rs index 3f243df..74ffa1b 100644 --- a/src/dsa/rpo_falcon512/signature.rs +++ b/src/dsa/rpo_falcon512/signature.rs @@ -1,10 +1,11 @@ +use core::cell::OnceCell; + use super::{ ByteReader, ByteWriter, Deserializable, DeserializationError, Felt, NonceBytes, NonceElements, Polynomial, PublicKeyBytes, Rpo256, Serializable, SignatureBytes, Word, MODULUS, N, SIG_L2_BOUND, ZERO, }; -use crate::utils::string::ToString; -use core::cell::OnceCell; +use crate::utils::string::*; // FALCON SIGNATURE // ================================================================================================ @@ -195,12 +196,13 @@ fn decode_nonce(nonce: &NonceBytes) -> NonceElements { #[cfg(all(test, feature = "std"))] mod tests { + use libc::c_void; + use rand_utils::rand_vector; + use super::{ - super::{ffi::*, Felt, KeyPair}, + super::{ffi::*, KeyPair}, *, }; - use libc::c_void; - use rand_utils::rand_vector; // Wrappers for unsafe functions impl Rpo128Context { diff --git a/src/hash/blake/mod.rs b/src/hash/blake/mod.rs index 6862934..5968092 100644 --- a/src/hash/blake/mod.rs +++ b/src/hash/blake/mod.rs @@ -1,14 +1,15 @@ -use super::{Digest, ElementHasher, Felt, FieldElement, Hasher}; -use crate::utils::{ - bytes_to_hex_string, hex_to_bytes, string::String, ByteReader, ByteWriter, Deserializable, - DeserializationError, HexParseError, Serializable, -}; use core::{ mem::{size_of, transmute, transmute_copy}, ops::Deref, slice::from_raw_parts, }; +use super::{Digest, ElementHasher, Felt, FieldElement, Hasher}; +use crate::utils::{ + bytes_to_hex_string, hex_to_bytes, string::*, ByteReader, ByteWriter, Deserializable, + DeserializationError, HexParseError, Serializable, +}; + #[cfg(test)] mod tests; diff --git a/src/hash/blake/tests.rs b/src/hash/blake/tests.rs index b03b06a..ba7a71e 100644 --- a/src/hash/blake/tests.rs +++ b/src/hash/blake/tests.rs @@ -1,8 +1,9 @@ -use super::*; -use crate::utils::collections::Vec; use proptest::prelude::*; use rand_utils::rand_vector; +use super::*; +use crate::utils::collections::*; + #[test] fn blake3_hash_elements() { // test multiple of 8 diff --git a/src/hash/rescue/arch/mod.rs b/src/hash/rescue/arch/mod.rs index 9d82cf8..ada4c4f 100644 --- a/src/hash/rescue/arch/mod.rs +++ b/src/hash/rescue/arch/mod.rs @@ -1,7 +1,6 @@ #[cfg(target_feature = "sve")] pub mod optimized { - use crate::hash::rescue::STATE_WIDTH; - use crate::Felt; + use crate::{hash::rescue::STATE_WIDTH, Felt}; mod ffi { #[link(name = "rpo_sve", kind = "static")] @@ -50,8 +49,10 @@ mod x86_64_avx2; #[cfg(target_feature = "avx2")] pub mod optimized { use super::x86_64_avx2::{apply_inv_sbox, apply_sbox}; - use crate::hash::rescue::{add_constants, STATE_WIDTH}; - use crate::Felt; + use crate::{ + hash::rescue::{add_constants, STATE_WIDTH}, + Felt, + }; #[inline(always)] pub fn add_constants_and_apply_sbox( @@ -80,8 +81,7 @@ pub mod optimized { #[cfg(not(any(target_feature = "avx2", target_feature = "sve")))] pub mod optimized { - use crate::hash::rescue::STATE_WIDTH; - use crate::Felt; + use crate::{hash::rescue::STATE_WIDTH, Felt}; #[inline(always)] pub fn add_constants_and_apply_sbox( diff --git a/src/hash/rescue/mds/freq.rs b/src/hash/rescue/mds/freq.rs index 17ef67f..f752176 100644 --- a/src/hash/rescue/mds/freq.rs +++ b/src/hash/rescue/mds/freq.rs @@ -157,9 +157,10 @@ const fn block3(x: [i64; 3], y: [i64; 3]) -> [i64; 3] { #[cfg(test)] mod tests { - use super::super::{apply_mds, Felt, MDS, ZERO}; use proptest::prelude::*; + use super::super::{apply_mds, Felt, MDS, ZERO}; + const STATE_WIDTH: usize = 12; #[inline(always)] diff --git a/src/hash/rescue/mod.rs b/src/hash/rescue/mod.rs index d304064..448fe89 100644 --- a/src/hash/rescue/mod.rs +++ b/src/hash/rescue/mod.rs @@ -1,7 +1,8 @@ +use core::ops::Range; + use super::{ CubeExtension, Digest, ElementHasher, Felt, FieldElement, Hasher, StarkField, ONE, ZERO, }; -use core::ops::Range; mod arch; pub use arch::optimized::{add_constants_and_apply_inv_sbox, add_constants_and_apply_sbox}; diff --git a/src/hash/rescue/rpo/digest.rs b/src/hash/rescue/rpo/digest.rs index 801afe5..1c31ac5 100644 --- a/src/hash/rescue/rpo/digest.rs +++ b/src/hash/rescue/rpo/digest.rs @@ -1,10 +1,13 @@ +use core::{cmp::Ordering, fmt::Display, ops::Deref}; + use super::{Digest, Felt, StarkField, DIGEST_BYTES, DIGEST_SIZE, ZERO}; -use crate::utils::{ - bytes_to_hex_string, hex_to_bytes, string::String, ByteReader, ByteWriter, Deserializable, - DeserializationError, HexParseError, Serializable, +use crate::{ + rand::Randomizable, + utils::{ + bytes_to_hex_string, hex_to_bytes, string::*, ByteReader, ByteWriter, Deserializable, + DeserializationError, HexParseError, Serializable, + }, }; -use core::{cmp::Ordering, fmt::Display, ops::Deref}; -use winter_utils::Randomizable; // DIGEST TRAIT IMPLEMENTATIONS // ================================================================================================ @@ -320,10 +323,11 @@ impl IntoIterator for RpoDigest { #[cfg(test)] mod tests { - use super::{Deserializable, Felt, RpoDigest, Serializable, DIGEST_BYTES, DIGEST_SIZE}; - use crate::utils::{string::String, SliceReader}; use rand_utils::rand_value; + use super::{Deserializable, Felt, RpoDigest, Serializable, DIGEST_BYTES, DIGEST_SIZE}; + use crate::utils::{string::*, SliceReader}; + #[test] fn digest_serialization() { let e1 = Felt::new(rand_value()); diff --git a/src/hash/rescue/rpo/mod.rs b/src/hash/rescue/rpo/mod.rs index 864f568..8d71467 100644 --- a/src/hash/rescue/rpo/mod.rs +++ b/src/hash/rescue/rpo/mod.rs @@ -1,10 +1,11 @@ +use core::ops::Range; + use super::{ add_constants, add_constants_and_apply_inv_sbox, add_constants_and_apply_sbox, apply_inv_sbox, apply_mds, apply_sbox, Digest, ElementHasher, Felt, FieldElement, Hasher, StarkField, ARK1, ARK2, BINARY_CHUNK_SIZE, CAPACITY_RANGE, DIGEST_BYTES, DIGEST_RANGE, DIGEST_SIZE, INPUT1_RANGE, INPUT2_RANGE, MDS, NUM_ROUNDS, ONE, RATE_RANGE, RATE_WIDTH, STATE_WIDTH, ZERO, }; -use core::{convert::TryInto, ops::Range}; mod digest; pub use digest::RpoDigest; diff --git a/src/hash/rescue/rpo/tests.rs b/src/hash/rescue/rpo/tests.rs index 3dbdf4d..57aecdf 100644 --- a/src/hash/rescue/rpo/tests.rs +++ b/src/hash/rescue/rpo/tests.rs @@ -1,14 +1,11 @@ +use proptest::prelude::*; +use rand_utils::rand_value; + use super::{ super::{apply_inv_sbox, apply_sbox, ALPHA, INV_ALPHA}, Felt, FieldElement, Hasher, Rpo256, RpoDigest, StarkField, ONE, STATE_WIDTH, ZERO, }; -use crate::{ - utils::collections::{BTreeSet, Vec}, - Word, -}; -use core::convert::TryInto; -use proptest::prelude::*; -use rand_utils::rand_value; +use crate::{utils::collections::*, Word}; #[test] fn test_sbox() { diff --git a/src/hash/rescue/rpx/digest.rs b/src/hash/rescue/rpx/digest.rs index 5dd8914..f86a932 100644 --- a/src/hash/rescue/rpx/digest.rs +++ b/src/hash/rescue/rpx/digest.rs @@ -1,10 +1,13 @@ +use core::{cmp::Ordering, fmt::Display, ops::Deref}; + use super::{Digest, Felt, StarkField, DIGEST_BYTES, DIGEST_SIZE, ZERO}; -use crate::utils::{ - bytes_to_hex_string, hex_to_bytes, string::String, ByteReader, ByteWriter, Deserializable, - DeserializationError, HexParseError, Serializable, +use crate::{ + rand::Randomizable, + utils::{ + bytes_to_hex_string, hex_to_bytes, string::*, ByteReader, ByteWriter, Deserializable, + DeserializationError, HexParseError, Serializable, + }, }; -use core::{cmp::Ordering, fmt::Display, ops::Deref}; -use winter_utils::Randomizable; // DIGEST TRAIT IMPLEMENTATIONS // ================================================================================================ @@ -309,10 +312,11 @@ impl Deserializable for RpxDigest { #[cfg(test)] mod tests { - use super::{Deserializable, Felt, RpxDigest, Serializable, DIGEST_BYTES, DIGEST_SIZE}; - use crate::utils::{string::String, SliceReader}; use rand_utils::rand_value; + use super::{Deserializable, Felt, RpxDigest, Serializable, DIGEST_BYTES, DIGEST_SIZE}; + use crate::utils::{string::*, SliceReader}; + #[test] fn digest_serialization() { let e1 = Felt::new(rand_value()); diff --git a/src/hash/rescue/rpx/mod.rs b/src/hash/rescue/rpx/mod.rs index 70d7a50..aa2e8d1 100644 --- a/src/hash/rescue/rpx/mod.rs +++ b/src/hash/rescue/rpx/mod.rs @@ -1,3 +1,5 @@ +use core::ops::Range; + use super::{ add_constants, add_constants_and_apply_inv_sbox, add_constants_and_apply_sbox, apply_inv_sbox, apply_mds, apply_sbox, CubeExtension, Digest, ElementHasher, Felt, FieldElement, Hasher, @@ -5,7 +7,6 @@ use super::{ DIGEST_SIZE, INPUT1_RANGE, INPUT2_RANGE, MDS, NUM_ROUNDS, RATE_RANGE, RATE_WIDTH, STATE_WIDTH, ZERO, }; -use core::{convert::TryInto, ops::Range}; mod digest; pub use digest::RpxDigest; diff --git a/src/hash/rescue/tests.rs b/src/hash/rescue/tests.rs index f0669e9..94630fd 100644 --- a/src/hash/rescue/tests.rs +++ b/src/hash/rescue/tests.rs @@ -1,6 +1,7 @@ -use super::{Felt, FieldElement, ALPHA, INV_ALPHA}; use rand_utils::rand_value; +use super::{Felt, FieldElement, ALPHA, INV_ALPHA}; + #[test] fn test_alphas() { let e: Felt = Felt::new(rand_value()); diff --git a/src/main.rs b/src/main.rs index 7d28493..bf925b4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +use std::time::Instant; + use clap::Parser; use miden_crypto::{ hash::rpo::{Rpo256, RpoDigest}, @@ -5,7 +7,6 @@ use miden_crypto::{ Felt, Word, ONE, }; use rand_utils::rand_value; -use std::time::Instant; #[derive(Parser, Debug)] #[clap(name = "Benchmark", about = "SMT benchmark", version, rename_all = "kebab-case")] diff --git a/src/merkle/empty_roots.rs b/src/merkle/empty_roots.rs index 724d8ec..30dd41a 100644 --- a/src/merkle/empty_roots.rs +++ b/src/merkle/empty_roots.rs @@ -1,6 +1,7 @@ -use super::{Felt, RpoDigest, EMPTY_WORD}; use core::slice; +use super::{Felt, RpoDigest, EMPTY_WORD}; + // EMPTY NODES SUBTREES // ================================================================================================ diff --git a/src/merkle/error.rs b/src/merkle/error.rs index 2ecfeba..6c7b5fd 100644 --- a/src/merkle/error.rs +++ b/src/merkle/error.rs @@ -1,10 +1,7 @@ -use crate::{ - merkle::{MerklePath, NodeIndex, RpoDigest}, - utils::collections::Vec, -}; use core::fmt; -use super::smt::SmtLeafError; +use super::{smt::SmtLeafError, MerklePath, NodeIndex, RpoDigest}; +use crate::utils::collections::*; #[derive(Clone, Debug, PartialEq, Eq)] pub enum MerkleError { diff --git a/src/merkle/index.rs b/src/merkle/index.rs index a7f7f4f..104ceb4 100644 --- a/src/merkle/index.rs +++ b/src/merkle/index.rs @@ -1,6 +1,7 @@ +use core::fmt::Display; + use super::{Felt, MerkleError, RpoDigest}; use crate::utils::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}; -use core::fmt::Display; // NODE INDEX // ================================================================================================ @@ -181,9 +182,10 @@ impl Deserializable for NodeIndex { #[cfg(test)] mod tests { - use super::*; use proptest::prelude::*; + use super::*; + #[test] fn test_node_index_value_too_high() { assert_eq!(NodeIndex::new(0, 0).unwrap(), NodeIndex { depth: 0, value: 0 }); diff --git a/src/merkle/merkle_tree.rs b/src/merkle/merkle_tree.rs index 2447935..e40f31e 100644 --- a/src/merkle/merkle_tree.rs +++ b/src/merkle/merkle_tree.rs @@ -1,8 +1,10 @@ -use super::{InnerNodeInfo, MerkleError, MerklePath, NodeIndex, Rpo256, RpoDigest, Vec, Word}; -use crate::utils::{string::String, uninit_vector, word_to_hex}; use core::{fmt, ops::Deref, slice}; + use winter_math::log2; +use super::{InnerNodeInfo, MerkleError, MerklePath, NodeIndex, Rpo256, RpoDigest, Word}; +use crate::utils::{collections::*, string::*, uninit_vector, word_to_hex}; + // MERKLE TREE // ================================================================================================ @@ -283,13 +285,15 @@ pub fn path_to_text(path: &MerklePath) -> Result { #[cfg(test)] mod tests { + use core::mem::size_of; + + use proptest::prelude::*; + use super::*; use crate::{ - merkle::{digests_to_words, int_to_leaf, int_to_node, InnerNodeInfo}, - Felt, Word, WORD_SIZE, + merkle::{digests_to_words, int_to_leaf, int_to_node}, + Felt, WORD_SIZE, }; - use core::mem::size_of; - use proptest::prelude::*; const LEAVES4: [RpoDigest; WORD_SIZE] = [int_to_node(1), int_to_node(2), int_to_node(3), int_to_node(4)]; diff --git a/src/merkle/mmr/delta.rs b/src/merkle/mmr/delta.rs index df4bc46..172eaf5 100644 --- a/src/merkle/mmr/delta.rs +++ b/src/merkle/mmr/delta.rs @@ -1,4 +1,5 @@ -use super::super::{RpoDigest, Vec}; +use super::super::RpoDigest; +use crate::utils::collections::*; /// Container for the update data of a [super::PartialMmr] #[derive(Debug)] diff --git a/src/merkle/mmr/error.rs b/src/merkle/mmr/error.rs index 8c09050..647b40d 100644 --- a/src/merkle/mmr/error.rs +++ b/src/merkle/mmr/error.rs @@ -1,9 +1,9 @@ -use crate::merkle::MerkleError; use core::fmt::{Display, Formatter}; - #[cfg(feature = "std")] use std::error::Error; +use crate::merkle::MerkleError; + #[derive(Debug, PartialEq, Eq, Clone)] pub enum MmrError { InvalidPosition(usize), diff --git a/src/merkle/mmr/full.rs b/src/merkle/mmr/full.rs index 3836567..5f43ac8 100644 --- a/src/merkle/mmr/full.rs +++ b/src/merkle/mmr/full.rs @@ -11,11 +11,12 @@ //! merged, creating a new tree with depth d+1, this process is continued until the property is //! reestablished. use super::{ - super::{InnerNodeInfo, MerklePath, Vec}, + super::{InnerNodeInfo, MerklePath}, bit::TrueBitPositionIterator, leaf_to_corresponding_tree, nodes_in_forest, MmrDelta, MmrError, MmrPeaks, MmrProof, Rpo256, RpoDigest, }; +use crate::utils::collections::*; // MMR // =============================================================================================== diff --git a/src/merkle/mmr/inorder.rs b/src/merkle/mmr/inorder.rs index a090ef9..655f364 100644 --- a/src/merkle/mmr/inorder.rs +++ b/src/merkle/mmr/inorder.rs @@ -126,9 +126,10 @@ impl From for u64 { #[cfg(test)] mod test { - use super::InOrderIndex; use proptest::prelude::*; + use super::InOrderIndex; + proptest! { #[test] fn proptest_inorder_index_random(count in 1..1000usize) { diff --git a/src/merkle/mmr/partial.rs b/src/merkle/mmr/partial.rs index 2241ebb..ea4faf1 100644 --- a/src/merkle/mmr/partial.rs +++ b/src/merkle/mmr/partial.rs @@ -4,10 +4,7 @@ use crate::{ mmr::{leaf_to_corresponding_tree, nodes_in_forest}, InOrderIndex, InnerNodeInfo, MerklePath, MmrError, MmrPeaks, }, - utils::{ - collections::{BTreeMap, BTreeSet, Vec}, - vec, - }, + utils::{collections::*, vec}, }; // TYPE ALIASES @@ -616,10 +613,13 @@ fn forest_to_rightmost_index(forest: usize) -> InOrderIndex { #[cfg(test)] mod tests { use super::{ - forest_to_rightmost_index, forest_to_root_index, BTreeSet, InOrderIndex, MmrPeaks, - PartialMmr, RpoDigest, Vec, + forest_to_rightmost_index, forest_to_root_index, InOrderIndex, MmrPeaks, PartialMmr, + RpoDigest, + }; + use crate::{ + merkle::{int_to_node, MerkleStore, Mmr, NodeIndex}, + utils::collections::*, }; - use crate::merkle::{int_to_node, MerkleStore, Mmr, NodeIndex}; const LEAVES: [RpoDigest; 7] = [ int_to_node(0), diff --git a/src/merkle/mmr/peaks.rs b/src/merkle/mmr/peaks.rs index 82bbea4..b18c231 100644 --- a/src/merkle/mmr/peaks.rs +++ b/src/merkle/mmr/peaks.rs @@ -1,7 +1,5 @@ -use super::{ - super::{RpoDigest, Vec, ZERO}, - Felt, MmrError, MmrProof, Rpo256, Word, -}; +use super::{super::ZERO, Felt, MmrError, MmrProof, Rpo256, RpoDigest, Word}; +use crate::utils::collections::*; // MMR PEAKS // ================================================================================================ diff --git a/src/merkle/mmr/tests.rs b/src/merkle/mmr/tests.rs index ecb92d5..25cd1a1 100644 --- a/src/merkle/mmr/tests.rs +++ b/src/merkle/mmr/tests.rs @@ -1,11 +1,12 @@ use super::{ - super::{InnerNodeInfo, Rpo256, RpoDigest, Vec}, + super::{InnerNodeInfo, Rpo256, RpoDigest}, bit::TrueBitPositionIterator, full::high_bitmask, leaf_to_corresponding_tree, nodes_in_forest, Mmr, MmrPeaks, PartialMmr, }; use crate::{ merkle::{int_to_node, InOrderIndex, MerklePath, MerkleTree, MmrProof, NodeIndex}, + utils::collections::*, Felt, Word, }; @@ -837,9 +838,10 @@ fn test_mmr_add_invalid_odd_leaf() { } mod property_tests { - use super::leaf_to_corresponding_tree; use proptest::prelude::*; + use super::leaf_to_corresponding_tree; + proptest! { #[test] fn test_last_position_is_always_contained_in_the_last_tree(leaves in any::().prop_filter("cant have an empty tree", |v| *v != 0)) { diff --git a/src/merkle/mod.rs b/src/merkle/mod.rs index 125b94a..b5a1d5e 100644 --- a/src/merkle/mod.rs +++ b/src/merkle/mod.rs @@ -2,7 +2,6 @@ use super::{ hash::rpo::{Rpo256, RpoDigest}, - utils::collections::{vec, BTreeMap, BTreeSet, KvMap, RecordingMap, Vec}, Felt, Word, EMPTY_WORD, ZERO, }; @@ -45,6 +44,9 @@ pub use error::MerkleError; // HELPER FUNCTIONS // ================================================================================================ +#[cfg(test)] +use crate::utils::collections::*; + #[cfg(test)] const fn int_to_node(value: u64) -> RpoDigest { RpoDigest::new([Felt::new(value), ZERO, ZERO, ZERO]) diff --git a/src/merkle/partial_mt/mod.rs b/src/merkle/partial_mt/mod.rs index 1019fcf..968f85c 100644 --- a/src/merkle/partial_mt/mod.rs +++ b/src/merkle/partial_mt/mod.rs @@ -1,12 +1,13 @@ +use core::fmt; + use super::{ - BTreeMap, BTreeSet, InnerNodeInfo, MerkleError, MerklePath, NodeIndex, Rpo256, RpoDigest, - ValuePath, Vec, Word, EMPTY_WORD, + InnerNodeInfo, MerkleError, MerklePath, NodeIndex, Rpo256, RpoDigest, ValuePath, Word, + EMPTY_WORD, }; use crate::utils::{ - format, string::String, vec, word_to_hex, ByteReader, ByteWriter, Deserializable, + collections::*, format, string::*, vec, word_to_hex, ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable, }; -use core::fmt; #[cfg(test)] mod tests; diff --git a/src/merkle/partial_mt/tests.rs b/src/merkle/partial_mt/tests.rs index da11fc4..41685d9 100644 --- a/src/merkle/partial_mt/tests.rs +++ b/src/merkle/partial_mt/tests.rs @@ -1,10 +1,11 @@ use super::{ super::{ - digests_to_words, int_to_node, BTreeMap, DefaultMerkleStore as MerkleStore, MerkleTree, - NodeIndex, PartialMerkleTree, + digests_to_words, int_to_node, DefaultMerkleStore as MerkleStore, MerkleTree, NodeIndex, + PartialMerkleTree, }, - Deserializable, InnerNodeInfo, RpoDigest, Serializable, ValuePath, Vec, + Deserializable, InnerNodeInfo, RpoDigest, Serializable, ValuePath, }; +use crate::utils::collections::*; // TEST DATA // ================================================================================================ diff --git a/src/merkle/path.rs b/src/merkle/path.rs index a7cdc5d..ef57f8a 100644 --- a/src/merkle/path.rs +++ b/src/merkle/path.rs @@ -1,8 +1,10 @@ -use crate::Word; - -use super::{vec, InnerNodeInfo, MerkleError, NodeIndex, Rpo256, RpoDigest, Vec}; use core::ops::{Deref, DerefMut}; -use winter_utils::{ByteReader, Deserializable, DeserializationError, Serializable}; + +use super::{InnerNodeInfo, MerkleError, NodeIndex, Rpo256, RpoDigest}; +use crate::{ + utils::{collections::*, ByteReader, Deserializable, DeserializationError, Serializable}, + Word, +}; // MERKLE PATH // ================================================================================================ diff --git a/src/merkle/smt/full/error.rs b/src/merkle/smt/full/error.rs index b629043..51e3d9d 100644 --- a/src/merkle/smt/full/error.rs +++ b/src/merkle/smt/full/error.rs @@ -3,7 +3,7 @@ use core::fmt; use crate::{ hash::rpo::RpoDigest, merkle::{LeafIndex, SMT_DEPTH}, - utils::collections::Vec, + utils::collections::*, Word, }; diff --git a/src/merkle/smt/full/leaf.rs b/src/merkle/smt/full/leaf.rs index 12aedd6..ff8d352 100644 --- a/src/merkle/smt/full/leaf.rs +++ b/src/merkle/smt/full/leaf.rs @@ -1,9 +1,10 @@ use core::cmp::Ordering; -use crate::utils::{collections::Vec, string::ToString, vec}; -use winter_utils::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}; - use super::{Felt, LeafIndex, Rpo256, RpoDigest, SmtLeafError, Word, EMPTY_WORD, SMT_DEPTH}; +use crate::utils::{ + collections::*, string::*, vec, ByteReader, ByteWriter, Deserializable, DeserializationError, + Serializable, +}; #[derive(Clone, Debug, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] diff --git a/src/merkle/smt/full/mod.rs b/src/merkle/smt/full/mod.rs index e895f54..50490c8 100644 --- a/src/merkle/smt/full/mod.rs +++ b/src/merkle/smt/full/mod.rs @@ -1,11 +1,8 @@ -use crate::hash::rpo::Rpo256; -use crate::merkle::{EmptySubtreeRoots, InnerNodeInfo}; -use crate::utils::collections::{BTreeMap, BTreeSet}; -use crate::{Felt, EMPTY_WORD}; - use super::{ - InnerNode, LeafIndex, MerkleError, MerklePath, NodeIndex, RpoDigest, SparseMerkleTree, Word, + EmptySubtreeRoots, Felt, InnerNode, InnerNodeInfo, LeafIndex, MerkleError, MerklePath, + NodeIndex, Rpo256, RpoDigest, SparseMerkleTree, Word, EMPTY_WORD, }; +use crate::utils::collections::*; mod error; pub use error::{SmtLeafError, SmtProofError}; diff --git a/src/merkle/smt/full/proof.rs b/src/merkle/smt/full/proof.rs index bd6395c..2b1e5a0 100644 --- a/src/merkle/smt/full/proof.rs +++ b/src/merkle/smt/full/proof.rs @@ -1,7 +1,7 @@ -use crate::utils::string::ToString; -use winter_utils::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}; - use super::{MerklePath, RpoDigest, SmtLeaf, SmtProofError, Word, SMT_DEPTH}; +use crate::utils::{ + string::*, ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable, +}; /// A proof which can be used to assert membership (or non-membership) of key-value pairs in a /// [`super::Smt`]. @@ -23,7 +23,8 @@ impl SmtProof { /// # Errors /// Returns an error if the path length is not [`SMT_DEPTH`]. pub fn new(path: MerklePath, leaf: SmtLeaf) -> Result { - if path.len() != SMT_DEPTH.into() { + let depth: usize = SMT_DEPTH.into(); + if path.len() != depth { return Err(SmtProofError::InvalidPathLength(path.len())); } diff --git a/src/merkle/smt/full/tests.rs b/src/merkle/smt/full/tests.rs index 9afc1fb..193e7f9 100644 --- a/src/merkle/smt/full/tests.rs +++ b/src/merkle/smt/full/tests.rs @@ -1,10 +1,8 @@ -use winter_utils::{Deserializable, Serializable}; - -use super::*; +use super::{Felt, LeafIndex, NodeIndex, Rpo256, RpoDigest, Smt, SmtLeaf, EMPTY_WORD, SMT_DEPTH}; use crate::{ merkle::{EmptySubtreeRoots, MerkleStore}, - utils::collections::Vec, - ONE, WORD_SIZE, + utils::{collections::*, Deserializable, Serializable}, + Word, ONE, WORD_SIZE, }; // SMT diff --git a/src/merkle/smt/mod.rs b/src/merkle/smt/mod.rs index 08d61a4..1ff86fb 100644 --- a/src/merkle/smt/mod.rs +++ b/src/merkle/smt/mod.rs @@ -1,10 +1,10 @@ +use super::{EmptySubtreeRoots, InnerNodeInfo, MerkleError, MerklePath, NodeIndex}; use crate::{ hash::rpo::{Rpo256, RpoDigest}, - Word, + utils::collections::*, + Felt, Word, EMPTY_WORD, }; -use super::{EmptySubtreeRoots, MerkleError, MerklePath, NodeIndex, Vec}; - mod full; pub use full::{Smt, SmtLeaf, SmtLeafError, SmtProof, SmtProofError, SMT_DEPTH}; diff --git a/src/merkle/smt/simple/mod.rs b/src/merkle/smt/simple/mod.rs index b0a4ab9..2f7b8f7 100644 --- a/src/merkle/smt/simple/mod.rs +++ b/src/merkle/smt/simple/mod.rs @@ -1,13 +1,9 @@ -use crate::{ - merkle::{EmptySubtreeRoots, InnerNodeInfo, MerklePath, ValuePath}, - EMPTY_WORD, -}; - use super::{ - InnerNode, LeafIndex, MerkleError, NodeIndex, RpoDigest, SparseMerkleTree, Word, SMT_MAX_DEPTH, + super::ValuePath, EmptySubtreeRoots, InnerNode, InnerNodeInfo, LeafIndex, MerkleError, + MerklePath, NodeIndex, RpoDigest, SparseMerkleTree, Word, EMPTY_WORD, SMT_MAX_DEPTH, SMT_MIN_DEPTH, }; -use crate::utils::collections::{BTreeMap, BTreeSet}; +use crate::utils::collections::*; #[cfg(test)] mod tests; diff --git a/src/merkle/smt/simple/tests.rs b/src/merkle/smt/simple/tests.rs index 87b385d..d811ce1 100644 --- a/src/merkle/smt/simple/tests.rs +++ b/src/merkle/smt/simple/tests.rs @@ -8,7 +8,7 @@ use crate::{ digests_to_words, int_to_leaf, int_to_node, smt::SparseMerkleTree, EmptySubtreeRoots, InnerNodeInfo, LeafIndex, MerkleTree, }, - utils::collections::Vec, + utils::collections::*, Word, EMPTY_WORD, }; diff --git a/src/merkle/store/mod.rs b/src/merkle/store/mod.rs index b060088..9e6238b 100644 --- a/src/merkle/store/mod.rs +++ b/src/merkle/store/mod.rs @@ -1,10 +1,12 @@ +use core::borrow::Borrow; + use super::{ - mmr::Mmr, BTreeMap, EmptySubtreeRoots, InnerNodeInfo, KvMap, MerkleError, MerklePath, - MerkleTree, NodeIndex, PartialMerkleTree, RecordingMap, RootPath, Rpo256, RpoDigest, SimpleSmt, - Smt, ValuePath, Vec, + mmr::Mmr, EmptySubtreeRoots, InnerNodeInfo, MerkleError, MerklePath, MerkleTree, NodeIndex, + PartialMerkleTree, RootPath, Rpo256, RpoDigest, SimpleSmt, Smt, ValuePath, +}; +use crate::utils::{ + collections::*, ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable, }; -use crate::utils::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}; -use core::borrow::Borrow; #[cfg(test)] mod tests; diff --git a/src/merkle/store/tests.rs b/src/merkle/store/tests.rs index 74986b4..e155c20 100644 --- a/src/merkle/store/tests.rs +++ b/src/merkle/store/tests.rs @@ -1,3 +1,5 @@ +use seq_macro::seq; + use super::{ DefaultMerkleStore as MerkleStore, EmptySubtreeRoots, MerkleError, MerklePath, NodeIndex, PartialMerkleTree, RecordingMerkleStore, Rpo256, RpoDigest, @@ -10,12 +12,10 @@ use crate::{ }; #[cfg(feature = "std")] -use super::{Deserializable, Serializable}; - -#[cfg(feature = "std")] -use std::error::Error; - -use seq_macro::seq; +use { + super::{Deserializable, Serializable}, + std::error::Error, +}; // TEST DATA // ================================================================================================ diff --git a/src/rand/mod.rs b/src/rand/mod.rs index 68016dd..9e0f3a9 100644 --- a/src/rand/mod.rs +++ b/src/rand/mod.rs @@ -1,6 +1,7 @@ //! Pseudo-random element generation. pub use winter_crypto::{DefaultRandomCoin as WinterRandomCoin, RandomCoin, RandomCoinError}; +pub use winter_utils::Randomizable; use crate::{Felt, FieldElement, Word, ZERO}; diff --git a/src/rand/rpo.rs b/src/rand/rpo.rs index 92f4288..5e83109 100644 --- a/src/rand/rpo.rs +++ b/src/rand/rpo.rs @@ -1,12 +1,11 @@ -use super::{Felt, FeltRng, FieldElement, Word, ZERO}; +use super::{Felt, FeltRng, FieldElement, RandomCoin, RandomCoinError, Word, ZERO}; use crate::{ hash::rpo::{Rpo256, RpoDigest}, utils::{ - collections::Vec, string::ToString, vec, ByteReader, ByteWriter, Deserializable, + collections::*, string::*, vec, ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable, }, }; -pub use winter_crypto::{RandomCoin, RandomCoinError}; // CONSTANTS // ================================================================================================ diff --git a/src/utils/kv_map.rs b/src/utils/kv_map.rs index dc8927a..3315c8a 100644 --- a/src/utils/kv_map.rs +++ b/src/utils/kv_map.rs @@ -1,7 +1,8 @@ use core::cell::RefCell; -use winter_utils::{ - collections::{btree_map::IntoIter, BTreeMap, BTreeSet}, - Box, + +use super::{ + boxed::*, + collections::{btree_map::*, *}, }; // KEY-VALUE MAP TRAIT diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 94f27d1..b3ad5d8 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,26 +1,29 @@ //! Utilities used in this crate which can also be generally useful downstream. -use super::{utils::string::String, Word}; use core::fmt::{self, Display, Write}; +#[cfg(feature = "std")] +pub use std::{format, vec}; + #[cfg(not(feature = "std"))] pub use alloc::{format, vec}; -#[cfg(feature = "std")] -pub use std::{format, vec}; +use super::Word; +use crate::utils::string::*; mod kv_map; // RE-EXPORTS // ================================================================================================ pub use winter_utils::{ - string, uninit_vector, Box, ByteReader, ByteWriter, Deserializable, DeserializationError, - Serializable, SliceReader, + boxed, string, uninit_vector, Box, ByteReader, ByteWriter, Deserializable, + DeserializationError, Serializable, SliceReader, }; pub mod collections { - pub use super::kv_map::*; pub use winter_utils::collections::*; + + pub use super::kv_map::*; } // UTILITY FUNCTIONS