Merge 3619a58118
into 5805178fc7
This commit is contained in:
commit
adc543c29a
|
@ -7,6 +7,9 @@ and this library adheres to Rust's notion of
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- `impl {PartialOrd, Ord, Hash}` for `zip32::DiversifierIndex`
|
||||
|
||||
## [0.1.1] - 2024-03-14
|
||||
|
||||
### Added
|
||||
|
|
27
src/lib.rs
27
src/lib.rs
|
@ -149,7 +149,7 @@ impl ChainCode {
|
|||
}
|
||||
|
||||
/// The index for a particular diversifier.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub struct DiversifierIndex([u8; 11]);
|
||||
|
||||
impl Default for DiversifierIndex {
|
||||
|
@ -214,6 +214,23 @@ impl From<DiversifierIndex> for u128 {
|
|||
}
|
||||
}
|
||||
|
||||
impl PartialOrd for DiversifierIndex {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
|
||||
Some(self.cmp(other))
|
||||
}
|
||||
}
|
||||
|
||||
impl Ord for DiversifierIndex {
|
||||
fn cmp(&self, other: &Self) -> core::cmp::Ordering {
|
||||
self.0.iter().rev().zip(other.0.iter().rev()).find_map(|(a, b)|
|
||||
match a.cmp(b) {
|
||||
core::cmp::Ordering::Equal => None,
|
||||
ineq => Some(ineq)
|
||||
}
|
||||
).unwrap_or(core::cmp::Ordering::Equal)
|
||||
}
|
||||
}
|
||||
|
||||
impl DiversifierIndex {
|
||||
/// Constructs the zero index.
|
||||
pub fn new() -> Self {
|
||||
|
@ -375,4 +392,12 @@ mod tests {
|
|||
|
||||
assert_matches!(di.increment(), Err(_));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn diversifier_index_ord() {
|
||||
assert!(DiversifierIndex::from(1u64) < DiversifierIndex::from(2u64));
|
||||
assert!(DiversifierIndex::from(u64::MAX - 1) < DiversifierIndex::from(u64::MAX));
|
||||
assert!(DiversifierIndex::from(3u64) == DiversifierIndex::from(3u64));
|
||||
assert!(DiversifierIndex::from(u64::MAX) == DiversifierIndex::from(u64::MAX));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue