Skip to main content

ps_anyrender/
resource_id.rs

1use std::sync::atomic::AtomicUsize;
2
3static ID_COUNTER: AtomicUsize = AtomicUsize::new(0);
4
5#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7#[cfg_attr(feature = "serde", serde(transparent))]
8pub struct ResourceId(u64);
9
10impl ResourceId {
11    #[allow(clippy::new_without_default)]
12    pub fn new() -> Self {
13        Self(ID_COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed) as u64)
14    }
15
16    pub fn into_ffi(&self) -> u64 {
17        self.0
18    }
19
20    pub fn from_ffi(raw: u64) -> Self {
21        Self(raw)
22    }
23}