From 6e2e9450a2e7a6534a2b2f6a6d11aabe6ed47562 Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Thu, 6 Mar 2025 19:35:52 +0800 Subject: [PATCH 1/5] rust-toolchain: upgrade rust edition to 2021 Signed-off-by: Eval EXEC --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e69a999..9118561 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "ckb-merkle-mountain-range" version = "0.6.0" authors = ["Nervos Core Dev "] -edition = "2018" +edition = "2021" rust-version = "1.60.0" license = "MIT" description = "A generalized merkle mountain range implementation" From ee499a9ef0caf3b22478e80380178191bd0a5b07 Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Thu, 6 Mar 2025 19:38:58 +0800 Subject: [PATCH 2/5] clippy: Using mem::take is faster as it avoids the allocation: https://rust-lang.github.io/rust-clippy/master/index.html#drain_collect cargo clippy --all --all-features --all-targets warning: you seem to be trying to move all elements into a new `Vec` --> src/mmr.rs:501:5 | 501 | v.drain(..).collect() | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `mem::take`: `std::mem::take(v)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drain_collect = note: `#[warn(clippy::drain_collect)]` on by default Signed-off-by: Eval EXEC --- src/mmr.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mmr.rs b/src/mmr.rs index fcd32c4..3c298ee 100644 --- a/src/mmr.rs +++ b/src/mmr.rs @@ -16,6 +16,7 @@ use crate::vec::Vec; use crate::{Error, Merge, Result}; use core::fmt::Debug; use core::marker::PhantomData; +use core::mem; #[allow(clippy::upper_case_acronyms)] pub struct MMR { @@ -498,5 +499,5 @@ fn take_while_vec bool>(v: &mut Vec, p: P) -> Vec { return v.drain(..i).collect(); } } - v.drain(..).collect() + mem::take(v) } From 6099da18fadd562257c5ddf4617822501ebcaa9e Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Thu, 6 Mar 2025 19:40:35 +0800 Subject: [PATCH 3/5] rust-toolchain: upgrade rust 2024 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9118561..d8b53e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "ckb-merkle-mountain-range" version = "0.6.0" authors = ["Nervos Core Dev "] -edition = "2021" +edition = "2024" rust-version = "1.60.0" license = "MIT" description = "A generalized merkle mountain range implementation" From ac82e869e38b0d193404d3a5f14d1b6205b0ffce Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Thu, 6 Mar 2025 20:17:47 +0800 Subject: [PATCH 4/5] execute `cargo fmt --all` --- benches/helper_benchmark.rs | 2 +- benches/mmr_benchmark.rs | 2 +- src/lib.rs | 2 +- src/mmr_store.rs | 2 +- src/tests/test_accumulate_headers.rs | 2 +- src/tests/test_helper.rs | 2 +- src/tests/test_mmr.rs | 10 ++++++---- src/tests/test_sequence.rs | 2 +- src/util.rs | 2 +- 9 files changed, 14 insertions(+), 12 deletions(-) diff --git a/benches/helper_benchmark.rs b/benches/helper_benchmark.rs index 35353a4..7ce5865 100644 --- a/benches/helper_benchmark.rs +++ b/benches/helper_benchmark.rs @@ -4,7 +4,7 @@ use criterion::Criterion; use ckb_merkle_mountain_range::{leaf_index_to_mmr_size, leaf_index_to_pos}; -use rand::{thread_rng, Rng}; +use rand::{Rng, thread_rng}; fn bench(c: &mut Criterion) { c.bench_function("left_index_to_pos", |b| { diff --git a/benches/mmr_benchmark.rs b/benches/mmr_benchmark.rs index d7c9b19..9d9eaf0 100644 --- a/benches/mmr_benchmark.rs +++ b/benches/mmr_benchmark.rs @@ -4,7 +4,7 @@ extern crate criterion; use criterion::{BenchmarkId, Criterion}; use bytes::Bytes; -use ckb_merkle_mountain_range::{util::MemStore, Error, MMRStoreReadOps, Merge, Result, MMR}; +use ckb_merkle_mountain_range::{Error, MMR, MMRStoreReadOps, Merge, Result, util::MemStore}; use rand::{seq::SliceRandom, thread_rng}; use std::convert::TryFrom; diff --git a/src/lib.rs b/src/lib.rs index 96b3fc0..25db68f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,7 +12,7 @@ pub mod util; pub use error::{Error, Result}; pub use helper::{leaf_index_to_mmr_size, leaf_index_to_pos}; pub use merge::Merge; -pub use mmr::{MerkleProof, MMR}; +pub use mmr::{MMR, MerkleProof}; pub use mmr_store::{MMRStoreReadOps, MMRStoreWriteOps}; cfg_if::cfg_if! { diff --git a/src/mmr_store.rs b/src/mmr_store.rs index 1586d70..6ebb7b3 100644 --- a/src/mmr_store.rs +++ b/src/mmr_store.rs @@ -1,4 +1,4 @@ -use crate::{vec::Vec, Result}; +use crate::{Result, vec::Vec}; #[derive(Default)] pub struct MMRBatch { diff --git a/src/tests/test_accumulate_headers.rs b/src/tests/test_accumulate_headers.rs index 71c26b8..cb49f46 100644 --- a/src/tests/test_accumulate_headers.rs +++ b/src/tests/test_accumulate_headers.rs @@ -1,5 +1,5 @@ use super::new_blake2b; -use crate::{leaf_index_to_pos, util::MemStore, MMRStoreReadOps, Merge, MerkleProof, Result, MMR}; +use crate::{MMR, MMRStoreReadOps, Merge, MerkleProof, Result, leaf_index_to_pos, util::MemStore}; use bytes::{Bytes, BytesMut}; use std::fmt; diff --git a/src/tests/test_helper.rs b/src/tests/test_helper.rs index 167f6bd..2d3f0a3 100644 --- a/src/tests/test_helper.rs +++ b/src/tests/test_helper.rs @@ -1,9 +1,9 @@ use super::{MergeNumberHash, NumberHash}; use crate::{ + MMR, helper::{get_peak_map, get_peaks, pos_height_in_tree}, leaf_index_to_mmr_size, leaf_index_to_pos, util::MemStore, - MMR, }; use lazy_static::lazy_static; use proptest::prelude::*; diff --git a/src/tests/test_mmr.rs b/src/tests/test_mmr.rs index 7e4405c..5625046 100644 --- a/src/tests/test_mmr.rs +++ b/src/tests/test_mmr.rs @@ -1,9 +1,9 @@ use super::{MergeNumberHash, NumberHash}; use crate::{ + Error, helper::pos_height_in_tree, leaf_index_to_mmr_size, util::{MemMMR, MemStore}, - Error, }; use faster_hex::hex_string; use proptest::prelude::*; @@ -234,9 +234,11 @@ fn test_invalid_proof_verification( } Err(Error::NodeProofsNotSupported) => { // if couldn't generate proof, then it contained a non-leaf - assert!(positions_to_verify - .iter() - .any(|pos| pos_height_in_tree(*pos) > 0)); + assert!( + positions_to_verify + .iter() + .any(|pos| pos_height_in_tree(*pos) > 0) + ); } Err(e) => panic!("Unexpected error: {}", e), } diff --git a/src/tests/test_sequence.rs b/src/tests/test_sequence.rs index 1d953a2..d4c5f54 100644 --- a/src/tests/test_sequence.rs +++ b/src/tests/test_sequence.rs @@ -3,7 +3,7 @@ use std::fmt; use proptest::proptest; use rand::{prelude::*, thread_rng}; -use crate::{util::MemStore, Merge, Result, MMR}; +use crate::{MMR, Merge, Result, util::MemStore}; #[derive(Eq, PartialEq, Clone, Default)] struct NumberRange { diff --git a/src/util.rs b/src/util.rs index f021de3..ea087d9 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,5 +1,5 @@ use crate::collections::BTreeMap; -use crate::{vec::Vec, MMRStoreReadOps, MMRStoreWriteOps, Result, MMR}; +use crate::{MMR, MMRStoreReadOps, MMRStoreWriteOps, Result, vec::Vec}; use core::cell::RefCell; #[derive(Clone)] From 5c70a2da409cce94c76cb934848c6b5cc13ddf3a Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Tue, 11 Mar 2025 11:05:32 +0800 Subject: [PATCH 5/5] cargo: set MSRV to 1.85.0, since we use rust 2024 edition --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index d8b53e9..5aa94da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "ckb-merkle-mountain-range" version = "0.6.0" authors = ["Nervos Core Dev "] edition = "2024" -rust-version = "1.60.0" +rust-version = "1.85.0" license = "MIT" description = "A generalized merkle mountain range implementation" repository = "https://github.com/nervosnetwork/merkle-mountain-range"