pub struct Contra<'a>(/* private fields */);Expand description
Used to declare an contravariant relationship between a type and its lifetime parameter.
A contravariant type is one for which the compiler can safely lengthen
its lifetime parameter as needed when passing it to a function; for example,
fn(&'a str) is contravariant w.r.t. 'a, so fn(&'short str) can be
used where fn(&'static str) is expected.
See the Transience documentation for more information.
Trait Implementations§
impl<'a, R> CanRecoverFrom<(R,)> for Contra<'a>where
Contra<'a>: CanRecoverFrom<R>,
impl<'a, R1, R2> CanRecoverFrom<(R1, R2)> for Contra<'a>
impl<'a, R1, R2, R3> CanRecoverFrom<(R1, R2, R3)> for Contra<'a>
impl<'a, R1, R2, R3, R4> CanRecoverFrom<(R1, R2, R3, R4)> for Contra<'a>where
Contra<'a>: CanRecoverFrom<R1> + CanRecoverFrom<R2> + CanRecoverFrom<R3> + CanRecoverFrom<R4>,
impl<'a, R> CanRecoverFrom<Contra<'a>> for (R,)where
R: CanRecoverFrom<Contra<'a>>,
impl<'a, R1, R2> CanRecoverFrom<Contra<'a>> for (R1, R2)
impl<'a, R1, R2, R3> CanRecoverFrom<Contra<'a>> for (R1, R2, R3)where
R1: CanRecoverFrom<Contra<'a>>,
R2: CanRecoverFrom<Contra<'a>>,
R3: CanRecoverFrom<Contra<'a>>,
impl<'a, R1, R2, R3, R4> CanRecoverFrom<Contra<'a>> for (R1, R2, R3, R4)where
R1: CanRecoverFrom<Contra<'a>>,
R2: CanRecoverFrom<Contra<'a>>,
R3: CanRecoverFrom<Contra<'a>>,
R4: CanRecoverFrom<Contra<'a>>,
impl<'a, 'b: 'a> CanRecoverFrom<Contra<'a>> for Contra<'b>
impl<'a, 'b: 'a> CanRecoverFrom<Contra<'a>> for Inv<'b>
impl<'a> CanRecoverFrom<Inv<'a>> for Contra<'a>
impl<'a, R> CanTranscendTo<(R,)> for Contra<'a>where
Contra<'a>: CanTranscendTo<R>,
impl<'a, R1, R2> CanTranscendTo<(R1, R2)> for Contra<'a>
impl<'a, R1, R2, R3> CanTranscendTo<(R1, R2, R3)> for Contra<'a>
impl<'a, R1, R2, R3, R4> CanTranscendTo<(R1, R2, R3, R4)> for Contra<'a>where
Contra<'a>: CanTranscendTo<R1> + CanTranscendTo<R2> + CanTranscendTo<R3> + CanTranscendTo<R4>,
impl<'a, R> CanTranscendTo<Contra<'a>> for (R,)where
R: CanTranscendTo<Contra<'a>>,
impl<'a, R1, R2> CanTranscendTo<Contra<'a>> for (R1, R2)
impl<'a, R1, R2, R3> CanTranscendTo<Contra<'a>> for (R1, R2, R3)where
R1: CanTranscendTo<Contra<'a>>,
R2: CanTranscendTo<Contra<'a>>,
R3: CanTranscendTo<Contra<'a>>,
impl<'a, R1, R2, R3, R4> CanTranscendTo<Contra<'a>> for (R1, R2, R3, R4)where
R1: CanTranscendTo<Contra<'a>>,
R2: CanTranscendTo<Contra<'a>>,
R3: CanTranscendTo<Contra<'a>>,
R4: CanTranscendTo<Contra<'a>>,
impl<'a, 'b: 'a> CanTranscendTo<Contra<'b>> for Contra<'a>
impl<'a, 'b: 'a> CanTranscendTo<Inv<'b>> for Contra<'a>
impl<'a> Copy for Contra<'a>
impl<'a> Transience for Contra<'a>
Auto Trait Implementations§
impl<'a> Freeze for Contra<'a>
impl<'a> RefUnwindSafe for Contra<'a>
impl<'a> Send for Contra<'a>
impl<'a> Sync for Contra<'a>
impl<'a> Unpin for Contra<'a>
impl<'a> UnwindSafe for Contra<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more