mirror of https://github.com/zcash/zip32.git
Implement `{PartialOrd, Ord, Hash}` for `DiversifierIndex`
This commit is contained in:
parent
5805178fc7
commit
38e39b7086
|
@ -7,6 +7,9 @@ and this library adheres to Rust's notion of
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- `impl {PartialOrd, Ord, Hash}` for `zip32::DiversifierIndex`
|
||||||
|
|
||||||
## [0.1.1] - 2024-03-14
|
## [0.1.1] - 2024-03-14
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
30
src/lib.rs
30
src/lib.rs
|
@ -149,7 +149,7 @@ impl ChainCode {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The index for a particular diversifier.
|
/// The index for a particular diversifier.
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||||
pub struct DiversifierIndex([u8; 11]);
|
pub struct DiversifierIndex([u8; 11]);
|
||||||
|
|
||||||
impl Default for DiversifierIndex {
|
impl Default for DiversifierIndex {
|
||||||
|
@ -214,6 +214,26 @@ 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 {
|
impl DiversifierIndex {
|
||||||
/// Constructs the zero index.
|
/// Constructs the zero index.
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
|
@ -375,4 +395,12 @@ mod tests {
|
||||||
|
|
||||||
assert_matches!(di.increment(), Err(_));
|
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