wgpu_core/track/
stateless.rs1use alloc::{sync::Arc, vec::Vec};
2use core::slice::Iter;
3
4#[derive(Debug)]
8pub(crate) struct StatelessTracker<T> {
9    resources: Vec<Arc<T>>,
10}
11
12impl<T> StatelessTracker<T> {
13    pub fn new() -> Self {
14        Self {
15            resources: Vec::new(),
16        }
17    }
18
19    pub fn insert_single(&mut self, resource: Arc<T>) -> &Arc<T> {
24        self.resources.push(resource);
25        unsafe { self.resources.last().unwrap_unchecked() }
26    }
27}
28
29impl<'a, T> IntoIterator for &'a StatelessTracker<T> {
30    type Item = &'a Arc<T>;
31    type IntoIter = Iter<'a, Arc<T>>;
32
33    fn into_iter(self) -> Self::IntoIter {
34        self.resources.as_slice().iter()
35    }
36}