nimiq-utils 0.2.0

Various utilities (e.g., CRC, Merkle proofs, timers) for Nimiq's Rust implementation
Documentation
use std::fmt;
use std::sync::atomic::{AtomicUsize, Ordering};

#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Hash)]
pub struct UniqueId(usize);

static GLOBAL_COUNTER: AtomicUsize = AtomicUsize::new(0);

#[allow(clippy::new_without_default)]
impl UniqueId {
    pub fn new() -> Self {
        UniqueId(GLOBAL_COUNTER.fetch_add(1, Ordering::Release))
    }
}

impl fmt::Display for UniqueId {
    fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
        write!(f, "{}", self.0)
    }
}