mirror of
https://github.com/Cuprate/cuprate.git
synced 2024-12-24 20:49:35 +00:00
Merge branch 'hf' into json
This commit is contained in:
commit
e57c887d15
1 changed files with 14 additions and 26 deletions
|
@ -73,13 +73,13 @@ pub enum HardFork {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HardFork {
|
impl HardFork {
|
||||||
/// The current [`HardFork`].
|
/// The latest [`HardFork`].
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// # use cuprate_types::HardFork;
|
/// # use cuprate_types::HardFork;
|
||||||
/// assert_eq!(HardFork::CURRENT, HardFork::V16);
|
/// assert_eq!(HardFork::LATEST, HardFork::V16);
|
||||||
/// ```
|
/// ```
|
||||||
pub const CURRENT: Self = Self::VARIANTS[Self::COUNT - 1];
|
pub const LATEST: Self = Self::VARIANTS[Self::COUNT - 1];
|
||||||
|
|
||||||
/// Returns the hard-fork for a blocks [`BlockHeader::hardfork_version`] field.
|
/// Returns the hard-fork for a blocks [`BlockHeader::hardfork_version`] field.
|
||||||
///
|
///
|
||||||
|
@ -101,21 +101,9 @@ impl HardFork {
|
||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub const fn from_version(version: u8) -> Result<Self, HardForkError> {
|
pub const fn from_version(version: u8) -> Result<Self, HardForkError> {
|
||||||
#[expect(
|
match Self::from_repr(version) {
|
||||||
clippy::cast_possible_truncation,
|
Some(this) => Ok(this),
|
||||||
reason = "we check that `HardFork::COUNT` fits into a `u8`."
|
None => Err(HardForkError::HardForkUnknown),
|
||||||
)]
|
|
||||||
const COUNT_AS_U8: u8 = {
|
|
||||||
const COUNT: usize = HardFork::COUNT;
|
|
||||||
assert!(COUNT <= u8::MAX as usize);
|
|
||||||
COUNT as u8
|
|
||||||
};
|
|
||||||
|
|
||||||
if version == 0 || version > COUNT_AS_U8 {
|
|
||||||
Err(HardForkError::HardForkUnknown)
|
|
||||||
} else {
|
|
||||||
// INVARIANT: we've proved above that `version` is in a valid range.
|
|
||||||
Ok(Self::VARIANTS[(version - 1) as usize])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +116,7 @@ impl HardFork {
|
||||||
/// # use strum::VariantArray;
|
/// # use strum::VariantArray;
|
||||||
/// // 0 is interpreted as 1.
|
/// // 0 is interpreted as 1.
|
||||||
/// assert_eq!(HardFork::from_vote(0), HardFork::V1);
|
/// assert_eq!(HardFork::from_vote(0), HardFork::V1);
|
||||||
/// // Unknown defaults to `CURRENT`.
|
/// // Unknown defaults to `LATEST`.
|
||||||
/// assert_eq!(HardFork::from_vote(17), HardFork::V16);
|
/// assert_eq!(HardFork::from_vote(17), HardFork::V16);
|
||||||
///
|
///
|
||||||
/// for (vote, hf) in HardFork::VARIANTS.iter().enumerate() {
|
/// for (vote, hf) in HardFork::VARIANTS.iter().enumerate() {
|
||||||
|
@ -143,7 +131,7 @@ impl HardFork {
|
||||||
Self::V1
|
Self::V1
|
||||||
} else {
|
} else {
|
||||||
// This must default to the latest hard-fork!
|
// This must default to the latest hard-fork!
|
||||||
Self::from_version(vote).unwrap_or(Self::CURRENT)
|
Self::from_version(vote).unwrap_or(Self::LATEST)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,21 +176,21 @@ impl HardFork {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns `true` if `self` is [`Self::CURRENT`].
|
/// Returns `true` if `self` is [`Self::LATEST`].
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// # use cuprate_types::HardFork;
|
/// # use cuprate_types::HardFork;
|
||||||
/// # use strum::VariantArray;
|
/// # use strum::VariantArray;
|
||||||
///
|
///
|
||||||
/// for hf in HardFork::VARIANTS.iter() {
|
/// for hf in HardFork::VARIANTS.iter() {
|
||||||
/// if *hf == HardFork::CURRENT {
|
/// if *hf == HardFork::LATEST {
|
||||||
/// assert!(hf.is_current());
|
/// assert!(hf.is_latest());
|
||||||
/// } else {
|
/// } else {
|
||||||
/// assert!(!hf.is_current());
|
/// assert!(!hf.is_latest());
|
||||||
/// }
|
/// }
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub const fn is_current(self) -> bool {
|
pub const fn is_latest(self) -> bool {
|
||||||
matches!(self, Self::CURRENT)
|
matches!(self, Self::LATEST)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue