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

pub struct ItemCtxt<'tcx> {
    tcx: TyCtxt<'tcx>,
    item_def_id: DefId,
}

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>item_def_id: DefId

Implementations

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

pub fn new(tcx: TyCtxt<'tcx>, item_def_id: DefId) -> ItemCtxt<'tcx>[src]

pub fn to_ty(&self, ast_ty: &'tcx Ty<'tcx>) -> Ty<'tcx>[src]

pub fn hir_id(&self) -> HirId[src]

pub fn node(&self) -> Node<'tcx>[src]

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

pub(in collect) fn type_parameter_bounds_in_generics(
    &self,
    ast_generics: &'tcx Generics<'tcx>,
    param_id: HirId,
    ty: Ty<'tcx>,
    only_self_bounds: OnlySelfBounds
) -> Vec<(Predicate<'tcx>, Span)>
[src]

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> !RefUnwindSafe for ItemCtxt<'tcx>

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

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

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

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

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> 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 = 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]