Files
PkmnLib_rs/src/utils/value_identifier.rs
Deukhoofd 691bf7c12e
All checks were successful
continuous-integration/drone/push Build is passing
Style and Clippy fixes.
2022-10-14 16:53:30 +02:00

22 lines
611 B
Rust

use std::sync::atomic::{AtomicUsize, Ordering};
/// The current index for the value counter.
static CURRENT: AtomicUsize = AtomicUsize::new(1);
/// An extremely basic way to identify a piece of data.
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
#[repr(C)]
pub struct ValueIdentifier(usize);
impl Default for ValueIdentifier {
fn default() -> Self {
Self(CURRENT.fetch_add(1, Ordering::SeqCst))
}
}
/// An object with a specific identifier.
pub trait ValueIdentifiable {
/// Get the identifier for the current object.
fn value_identifier(&self) -> ValueIdentifier;
}