[][src]Struct rustc::ty::Instance

pub struct Instance<'tcx> {
    pub def: InstanceDef<'tcx>,
    pub substs: SubstsRef<'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.

Fields

def: InstanceDef<'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.

substs: SubstsRef<'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.

Methods

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

fn fn_sig_for_fn_abi(&self, tcx: TyCtxt<'tcx>) -> PolyFnSig<'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.

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

pub fn monomorphic_ty(&self, tcx: TyCtxt<'tcx>) -> 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.

Returns the Ty corresponding to this Instance, with generic substitutions applied and lifetimes erased.

This method can only be called when the 'substs' for this Instance are fully monomorphic (no ty::Param's are present). This is usually the case (e.g. during codegen). However, during constant evaluation, we may want to try to resolve a Instance using generic parameters (e.g. when we are attempting to to do const-propagation). In this case, Instance.ty_env should be used to provide the ParamEnv for our generic context.

pub fn ty_env(&self, tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>) -> 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.

Like Instance.ty, but allows a ParamEnv to be specified for use during normalization. This method is only really useful during constant evaluation, where we are dealing with potentially generic types.

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

pub fn new(def_id: DefId, substs: SubstsRef<'tcx>) -> Instance<'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 mono(tcx: TyCtxt<'tcx>, def_id: DefId) -> Instance<'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 def_id(&self) -> DefId[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 resolve(
    tcx: TyCtxt<'tcx>,
    param_env: ParamEnv<'tcx>,
    def_id: DefId,
    substs: SubstsRef<'tcx>
) -> Option<Instance<'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.

Resolves a (def_id, substs) pair to an (optional) instance -- most commonly, this is used to find the precise code that will run for a trait method invocation, if known.

Returns None if we cannot resolve Instance to a specific instance. For example, in a context like this,

fn foo<T: Debug>(t: T) { ... }

trying to resolve Debug::fmt applied to T will yield None, because we do not know what code ought to run. (Note that this setting is also affected by the RevealMode in the parameter environment.)

Presuming that coherence and type-check have succeeded, if this method is invoked in a monomorphic context (i.e., like during codegen), then it is guaranteed to return Some.

pub fn resolve_for_fn_ptr(
    tcx: TyCtxt<'tcx>,
    param_env: ParamEnv<'tcx>,
    def_id: DefId,
    substs: SubstsRef<'tcx>
) -> Option<Instance<'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 resolve_for_vtable(
    tcx: TyCtxt<'tcx>,
    param_env: ParamEnv<'tcx>,
    def_id: DefId,
    substs: SubstsRef<'tcx>
) -> Option<Instance<'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 resolve_closure(
    tcx: TyCtxt<'tcx>,
    def_id: DefId,
    substs: SubstsRef<'tcx>,
    requested_kind: ClosureKind
) -> Instance<'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 resolve_drop_in_place(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> Instance<'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 fn_once_adapter_instance(
    tcx: TyCtxt<'tcx>,
    closure_did: DefId,
    substs: SubstsRef<'tcx>
) -> Instance<'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 is_vtable_shim(&self) -> bool[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<'tcx> Clone for Instance<'tcx>[src]

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

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

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

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

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

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

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

impl<'tcx, '__ctx> HashStable<StableHashingContext<'__ctx>> for Instance<'tcx>[src]

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

impl<'tcx, '__lifted> Lift<'__lifted> for Instance<'tcx>[src]

type Lifted = Instance<'__lifted>

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

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

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

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

Auto Trait Implementations

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

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

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

impl<'tcx> Unpin for Instance<'tcx>

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

Blanket Implementations

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

impl<T> ArenaAllocatable 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> Decodable for T where
    T: UseSpecializedDecodable
[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<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.