[][src]Struct rustc_middle::ty::subst::GenericArg

pub struct GenericArg<'tcx> {
    ptr: NonZeroUsize,
    marker: PhantomData<(Ty<'tcx>, Region<'tcx>, &'tcx Const<'tcx>)>,
}
⚙️ 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.

An entity in the Rust type system, which can be one of several kinds (types, lifetimes, and consts). To reduce memory usage, a GenericArg is a interned pointer, with the lowest 2 bits being reserved for a tag to indicate the type (Ty, Region, or Const) it points to.

Fields

ptr: NonZeroUsize
⚙️ 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.

marker: PhantomData<(Ty<'tcx>, Region<'tcx>, &'tcx Const<'tcx>)>
⚙️ 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.

Implementations

impl<'tcx> GenericArg<'tcx>[src]

pub fn unpack(self) -> GenericArgKind<'tcx>[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 expect_ty(self) -> Ty<'tcx>[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.

Unpack the GenericArg as a type when it is known certainly to be a type. This is true in cases where Substs is used in places where the kinds are known to be limited (e.g. in tuples, where the only parameters are type parameters).

pub fn expect_const(self) -> &'tcx Const<'tcx>[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.

Unpack the GenericArg as a const when it is known certainly to be a const.

impl<'tcx> GenericArg<'tcx>[src]

pub fn walk(self) -> TypeWalker<'tcx>[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.

Iterator that walks self and any types reachable from self, in depth-first order. Note that just walks the types that appear in self, it does not descend into the fields of structs or variants. For example:

isize => { isize }
Foo<Bar<isize>> => { Foo<Bar<isize>>, Bar<isize>, isize }
[isize] => { [isize], isize }

pub fn walk_shallow(self) -> impl Iterator<Item = GenericArg<'tcx>>[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.

Iterator that walks the immediate children of self. Hence Foo<Bar<i32>, u32> yields the sequence [Bar<i32>, u32] (but not i32, like walk).

Trait Implementations

impl<'tcx> Clone for GenericArg<'tcx>[src]

impl<'tcx> Copy for GenericArg<'tcx>[src]

impl<'tcx> Debug for GenericArg<'tcx>[src]

impl<'tcx> Decodable for GenericArg<'tcx>[src]

impl<'tcx> Display for GenericArg<'tcx>[src]

impl<'tcx> Encodable for GenericArg<'tcx>[src]

impl<'tcx> Eq for GenericArg<'tcx>[src]

impl<'tcx> From<&'tcx Const<'tcx>> for GenericArg<'tcx>[src]

impl<'tcx> From<&'tcx RegionKind> for GenericArg<'tcx>[src]

impl<'tcx> From<&'tcx TyS<'tcx>> for GenericArg<'tcx>[src]

impl<'tcx> Hash for GenericArg<'tcx>[src]

impl<'a, 'tcx> HashStable<StableHashingContext<'a>> for GenericArg<'tcx>[src]

impl<'tcx> Key for GenericArg<'tcx>[src]

type CacheSelector = DefaultCacheSelector

⚙️ 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<'a, 'tcx> Lift<'tcx> for GenericArg<'a>[src]

type Lifted = GenericArg<'tcx>

⚙️ 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<'tcx> Ord for GenericArg<'tcx>[src]

impl<'tcx> PartialEq<GenericArg<'tcx>> for GenericArg<'tcx>[src]

impl<'tcx> PartialOrd<GenericArg<'tcx>> for GenericArg<'tcx>[src]

impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for GenericArg<'tcx>[src]

type Output = P

⚙️ 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.

type Error = 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<'tcx> Relate<'tcx> for GenericArg<'tcx>[src]

impl<'tcx> StructuralEq for GenericArg<'tcx>[src]

impl<'tcx> StructuralPartialEq for GenericArg<'tcx>[src]

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

Auto Trait Implementations

impl<'tcx> !RefUnwindSafe for GenericArg<'tcx>

impl<'tcx> !Send for GenericArg<'tcx>

impl<'tcx> !Sync for GenericArg<'tcx>

impl<'tcx> Unpin for GenericArg<'tcx>

impl<'tcx> !UnwindSafe for GenericArg<'tcx>

Blanket Implementations

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

impl<'tcx, T> ArenaAllocatable<'tcx, ()> for T where
    T: Copy
[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> Cast for T

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

impl<Ctxt, T> DepNodeParams<Ctxt> for T where
    Ctxt: DepContext,
    T: HashStable<<Ctxt as DepContext>::StableHashingContext> + Debug
[src]

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

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?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<T> Same<T> for T

type Output = T

⚙️ 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.

Should always be Self

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> ToString for T where
    T: Display + ?Sized
[src]

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]