use std::marker::PhantomData; use crate::ThreadKey; mod context; mod guard; mod iterator; mod tuple; pub struct LockingIterator<'context, I> { key: &'context ThreadKey, iterator: I, } pub struct LockingTuple<'context, L, C> { _lockable: PhantomData, key: &'context ThreadKey, tuple: &'context C, } pub struct LockContext<'l, L> { key: Option, lockable: &'l L, } pub struct IteratorGuard<'a, Guard, Key> { _key: &'a Key, guard: Guard, }