gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

⎇ 055dedfd9f3eef1d35b78a1baa7370ebdf780962 src/id.rs Rust · 27 lines · 607 B History Who touched what raw

refactoring 055dedfd9 · Adam Nemecek ·

1//! Identifier for a Node
2//!
3//!
4use core::sync::atomic;
5
6/// Internal node id.
7pub(crate) type NodeId = usize;
8
9#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
10#[cfg_attr(not(any(feature = "std", feature = "alloc")), derive(hash32_derive::Hash32))]
11pub(crate) struct Id(usize);
12
13pub(crate) struct Allocator {
14    new_id: atomic::AtomicUsize,
15}
16
17impl Allocator {
18    pub const fn new() -> Self {
19        Self { new_id: atomic::AtomicUsize::new(0) }
20    }
21
22    pub fn allocate(&self) -> Id {
23        Id(self.new_id.fetch_add(1, atomic::Ordering::Relaxed))
24    }
25
26    pub fn free(&self, _ids: &[Id]) {}
27}