orx_linked_list/list/
reclaim.rs1use super::List;
2use crate::variant::ListVariant;
3use orx_pinned_vec::PinnedVec;
4use orx_selfref_col::{MemoryPolicy, MemoryReclaimer, MemoryState, Node};
5
6impl<V, M, P> List<V, M, P>
7where
8 V: ListVariant,
9 M: MemoryPolicy<V>,
10 P: PinnedVec<Node<V>>,
11{
12 pub fn reclaim_closed_nodes(&mut self) -> (MemoryState, MemoryState) {
19 let num_active_nodes = self.len();
20 let old = self.0.memory_state();
21
22 let state_changed = <V::Reclaimer as MemoryReclaimer<V>>::reclaim_nodes(&mut self.0);
24 self.0.nodes_mut().truncate(num_active_nodes);
25 self.0.update_state(state_changed);
26
27 (old, self.0.memory_state())
28 }
29}