wgpu_core/track/
stateless.rs
1use 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}