[][src]Struct rustc::mir::UserTypeProjections

pub struct UserTypeProjections {
    pub(crate) contents: Vec<(UserTypeProjection, Span)>,
}
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

A collection of projections into user types.

They are projections because a binding can occur a part of a parent pattern that has been ascribed a type.

Its a collection because there can be multiple type ascriptions on the path from the root of the pattern down to the binding itself.

An example:

struct S<'a>((i32, &'a str), String);
let S((_, w): (i32, &'static str), _): S = ...;
//    ------  ^^^^^^^^^^^^^^^^^^^ (1)
//  ---------------------------------  ^ (2)

The highlights labelled (1) show the subpattern (_, w) being ascribed the type (i32, &'static str).

The highlights labelled (2) show the whole pattern being ascribed the type S.

In this example, when we descend to w, we will have built up the following two projected types:

The first will lead to the constraint w: &'1 str (for some inferred region '1). The second will lead to the constraint w: &'static str.

Fields

contents: Vec<(UserTypeProjection, Span)>
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Methods

impl<'tcx> UserTypeProjections[src]

pub fn none() -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn from_projections(
    projs: impl Iterator<Item = (UserTypeProjection, Span)>
) -> Self
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn projections_and_spans(
    &self
) -> impl Iterator<Item = &(UserTypeProjection, Span)> + ExactSizeIterator
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn projections(
    &self
) -> impl Iterator<Item = &UserTypeProjection> + ExactSizeIterator
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn push_projection(self, user_ty: &UserTypeProjection, span: Span) -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

fn map_projections(
    self,
    f: impl FnMut(UserTypeProjection) -> UserTypeProjection
) -> Self
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn index(self) -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn subslice(self, from: u32, to: u32) -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn deref(self) -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn leaf(self, field: Field) -> Self[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

pub fn variant(
    self,
    adt_def: &'tcx AdtDef,
    variant_index: VariantIdx,
    field: Field
) -> Self
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Trait Implementations

impl Clone for UserTypeProjections[src]

impl Debug for UserTypeProjections[src]

impl Decodable for UserTypeProjections[src]

impl Encodable for UserTypeProjections[src]

impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for UserTypeProjections[src]

impl<'tcx> TypeFoldable<'tcx> for UserTypeProjections[src]

Auto Trait Implementations

impl RefUnwindSafe for UserTypeProjections

impl !Send for UserTypeProjections

impl !Sync for UserTypeProjections

impl Unpin for UserTypeProjections

impl UnwindSafe for UserTypeProjections

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<'a, T> Captures<'a> for T where
    T: ?Sized
[src]

impl<T> Decodable for T where
    T: UseSpecializedDecodable
[src]

impl<T> Encodable for T where
    T: UseSpecializedEncodable + ?Sized
[src]

impl<T> Erased for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> MaybeResult<T> for T[src]

type Error = !

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

impl<E> SpecializationError for E[src]

impl<'tcx, T> Subst<'tcx> for T where
    T: TypeFoldable<'tcx>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> WithConstness for T[src]