From d9095d8fce59714f75019ecf68911d9931a1af15 Mon Sep 17 00:00:00 2001 From: Mica White Date: Sat, 14 Mar 2026 20:37:26 -0400 Subject: Basic scoped lock and guard implementations --- src/collection/owned.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/collection/owned.rs') diff --git a/src/collection/owned.rs b/src/collection/owned.rs index 2172b96..516f1ea 100755 --- a/src/collection/owned.rs +++ b/src/collection/owned.rs @@ -647,9 +647,21 @@ impl OwnedLockCollection where for<'a> &'a L: IntoIterator, { - pub fn locking_iter(&self, key: ThreadKey) -> LockingIterator<<&L as IntoIterator>::IntoIter> { + pub fn locking_iter( + &self, + key: ThreadKey, + ) -> LockingIterator<<&L as IntoIterator>::IntoIter, ThreadKey> { LockingIterator::new(key, (&self.child).into_iter()) } + + pub fn scoped_locking_iter( + &self, + key: Key, + f: impl FnOnce(&mut LockingIterator<<&L as IntoIterator>::IntoIter, Key>) -> R, + ) -> R { + let mut iterator = LockingIterator::new(key, (&self.child).into_iter()); + f(&mut iterator) + } } #[cfg(test)] -- cgit v1.2.3