freya_core/accessibility/
id.rs

1use std::sync::{
2    Arc,
3    atomic::{
4        AtomicU64,
5        Ordering,
6    },
7};
8
9pub use accesskit::{
10    NodeId as AccessibilityId,
11    Role as AccessibilityRole,
12};
13
14#[derive(Clone)]
15pub struct AccessibilityGenerator {
16    counter: Arc<AtomicU64>,
17}
18
19impl Default for AccessibilityGenerator {
20    fn default() -> Self {
21        Self {
22            counter: Arc::new(AtomicU64::new(1)), // Must start at 1 because 0 is reserved for the Root
23        }
24    }
25}
26
27impl AccessibilityGenerator {
28    pub fn new_id(&self) -> u64 {
29        self.counter.fetch_add(1, Ordering::Relaxed)
30    }
31}