ps_anyrender/
resource_id.rs1use 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}