Skip to main content

VarianceDep

Struct VarianceDep 

Source
pub struct VarianceDep {
    pub position: VariancePosition,
    pub shape: &'static Shape,
}
Expand description

A dependency for variance computation.

Represents a type that this type depends on, along with the position (covariant or contravariant) in which it appears.

Fields§

§position: VariancePosition

The position of this dependency (covariant or contravariant)

§shape: &'static Shape

The shape of the dependency

Implementations§

Source§

impl VarianceDep

Source

pub const fn covariant(shape: &'static Shape) -> Self

Create a new variance dependency in covariant position.

Source

pub const fn contravariant(shape: &'static Shape) -> Self

Create a new variance dependency in contravariant position.

Source

pub const fn invariant(shape: &'static Shape) -> Self

Create a new variance dependency in invariant position.

Use this when the outer type is invariant with respect to this parameter, but you still want bivariant inner types to contribute nothing (rather than forcing the whole type to be invariant).

Example: &mut T is invariant with respect to T, but &mut i32 should be covariant with respect to its own lifetime when computing variance for some unrelated parameter (since i32 contributes Bivariant).

Trait Implementations§

Source§

impl Clone for VarianceDep

Source§

fn clone(&self) -> VarianceDep

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for VarianceDep

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for VarianceDep

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.