From 956431bd00594d609e7e4641c7a36cede393c9a0 Mon Sep 17 00:00:00 2001 From: Nova Date: Tue, 14 Jun 2022 21:05:20 -0400 Subject: [PATCH] feat(registry): get_valid_contents --- src/core/registry.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/registry.rs b/src/core/registry.rs index 16476c7..ec35e64 100644 --- a/src/core/registry.rs +++ b/src/core/registry.rs @@ -1,6 +1,6 @@ use anyhow::{anyhow, Result}; use parking_lot::RwLock; -use slab::{Iter, Slab}; +use slab::Slab; use std::sync::{Arc, Weak}; pub struct Registry(RwLock>>); @@ -11,9 +11,12 @@ impl Registry { self.0.write().insert(Arc::downgrade(&t_arc)); Ok(t_arc) } - pub fn iterate>)>(&self, closure: F) -> Result<()> { - closure(self.0.read().iter()); - Ok(()) + pub fn get_valid_contents(&self) -> Vec> { + self.0 + .read() + .iter() + .filter_map(|(_, item)| item.upgrade()) + .collect() } pub fn remove(&self, t: &T) -> Result<()> { let mut del_idx: Option = None;