[][src]Struct rustc_typeck::collect::ItemCtxt

pub struct ItemCtxt<'tcx> {
    tcx: TyCtxt<'tcx>,
    item_def_id: DefId,
}
⚙️ 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.

Context specific to some particular item. This is what implements AstConv. It has information about the predicates that are defined on the trait. Unfortunately, this predicate information is available in various different forms at various points in the process. So we can't just store a pointer to e.g., the AST or the parsed ty form, we have to be more flexible. To this end, the ItemCtxt is parameterized by a DefId that it uses to satisfy get_type_parameter_bounds requests, drawing the information from the AST (hir::Generics), recursively.

Fields

tcx: TyCtxt<'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.

item_def_id: DefId
⚙️ 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> ItemCtxt<'tcx>[src]

pub fn new(tcx: TyCtxt<'tcx>, item_def_id: DefId) -> ItemCtxt<'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 to_ty(&self, ast_ty: &'tcx Ty) -> 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.

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

fn type_parameter_bounds_in_generics(
    &self,
    ast_generics: &'tcx Generics,
    param_id: HirId,
    ty: Ty<'tcx>,
    only_self_bounds: OnlySelfBounds
) -> Vec<(Predicate<'tcx>, Span)>
[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.

Finds bounds from hir::Generics. This requires scanning through the AST. We do this to avoid having to convert all the bounds, which would create artificial cycles. Instead, we can only convert the bounds for a type parameter X if X::Foo is used.

Trait Implementations

impl<'tcx> AstConv<'tcx> for ItemCtxt<'tcx>[src]

Auto Trait Implementations

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

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

impl<'tcx> Unpin for ItemCtxt<'tcx>

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

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

Blanket Implementations

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

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

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

type Error = !

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

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

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

impl<E> SpecializationError for E[src]

impl<T> Erased for 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<'a, T> Captures<'a> for T where
    T: ?Sized
[src]