summaryrefslogtreecommitdiff
path: root/src/iterator.rs
blob: 79a2cc5347e675a07e2a4387a52c828ac0c7f9c9 (plain)
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<L>,
	key: &'context ThreadKey,
	tuple: &'context C,
}

pub struct LockContext<'l, L> {
	key: Option<ThreadKey>,
	lockable: &'l L,
}

pub struct IteratorGuard<'a, Guard, Key> {
	_key: &'a Key,
	guard: Guard,
}