1use std::marker::PhantomData;
4
5#[derive(Copy, Clone, Eq, PartialEq, PartialOrd, Ord, Hash, Debug, Default)]
11pub struct Invariant<'inv>(PhantomData<&'inv mut &'inv fn(&'inv ()) -> &'inv ()>);
12
13impl<'inv> Invariant<'inv> {
14 pub fn new() -> Self {
15 Invariant(PhantomData)
16 }
17
18 pub fn new_ref<T>(_v: &'inv T) -> Self {
19 Invariant(PhantomData)
20 }
21}
22
23#[cfg(not(feature = "parallel"))]
25pub trait ParallelSend {}
26
27#[cfg(feature = "parallel")]
28pub trait ParallelSend: Send {}
29
30#[cfg(not(feature = "parallel"))]
31impl<T> ParallelSend for T {}
32
33#[cfg(feature = "parallel")]
34impl<T: Send> ParallelSend for T {}