# Struct rustc_middle::ty::context::TyCtxtFeed

source ·

    pub struct TyCtxtFeed<'tcx, KEY: Copy> {
        pub tcx: TyCtxt<'tcx>,
        key: KEY,
    }

Expand description

This struct should only be created by `create_def`.

## Fields§

§`tcx: TyCtxt<'tcx>`§`key: KEY`

## Implementations§

source§

### impl<'tcx, KEY: Copy> TyCtxtFeed<'tcx, KEY>

source

#### pub fn key(&self) -> KEY

source§

### impl<'tcx> TyCtxtFeed<'tcx, LocalDefId>

source

#### pub fn def_id(&self) -> LocalDefId

source§

### impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn resolutions(self, value: ProvidedValue<'tcx>)

[query description - consider adding a doc-comment!] getting the resolver outputs

source§

### impl<'tcx, K: IntoQueryParam<LocalDefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn opt_local_def_id_to_hir_id(self, value: ProvidedValue<'tcx>)

Gives access to the HIR ID for the given `LocalDefId` owner `key` if any.

Definitions that were generated with no HIR, would be fed to return `None`.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn type_of(self, value: ProvidedValue<'tcx>)

Returns the `Ty` of the given `DefId`. If the `DefId` points to an alias, it will “skip” this alias to return the aliased type.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn is_type_alias_impl_trait(self, value: ProvidedValue<'tcx>)

[query description - consider adding a doc-comment!] determine whether the opaque is a type-alias impl trait

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn generics_of(self, value: ProvidedValue<'tcx>)

Maps from the `DefId` of an item (trait/struct/enum/fn) to its associated generics.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn explicit_item_bounds(self, value: ProvidedValue<'tcx>)

Returns the list of bounds that can be used for `SelectionCandidate::ProjectionCandidate(_)` and `ProjectionTyCandidate::TraitDef`. Specifically this is the bounds written on the trait’s type definition, or those after the `impl` keyword

ⓘ

    type X: Bound + 'lt
    //      ^^^^^^^^^^^
    impl Debug + Display
    //   ^^^^^^^^^^^^^^^

`key` is the `DefId` of the associated type or opaque type.

Bounds from the parent (e.g. with nested impl trait) are not included.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn explicit_predicates_of(self, value: ProvidedValue<'tcx>)

Returns the predicates written explicitly by the user.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn inferred_outlives_of(self, value: ProvidedValue<'tcx>)

Returns the inferred outlives predicates (e.g., for `struct Foo<'a, T> { x: &'a T }`, this would return `T: 'a`).

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn associated_item(self, value: ProvidedValue<'tcx>)

Maps from a trait item to the trait item “descriptor”.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn def_kind(self, value: ProvidedValue<'tcx>)

[query description - consider adding a doc-comment!] looking up definition kind of `tcx.def_path_str(def_id)`

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn def_span(self, value: ProvidedValue<'tcx>)

Gets the span for the definition.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn def_ident_span(self, value: ProvidedValue<'tcx>)

Gets the span for the identifier of the definition.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn param_env(self, value: ProvidedValue<'tcx>)

Gets the ParameterEnvironment for a given item; this environment will be in “user-facing” mode, meaning that it is suitable for type-checking etc, and it does not normalize specializable associated types. This is almost always what you want, unless you are doing MIR optimizations, in which case you might want to use `reveal_all()` method to change modes.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn defaultness(self, value: ProvidedValue<'tcx>)

Returns whether the impl or associated function has the `default` keyword.

source§

### impl<'tcx, K: IntoQueryParam<DefId> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn visibility(self, value: ProvidedValue<'tcx>)

Computes the visibility of the provided `def_id`.

If the item from the `def_id` doesn’t have a visibility, it will panic. For example a generic type parameter will panic if you call this method on it:

    use std::fmt::Debug;

    pub trait Foo<T: Debug> {}

In here, if you call `visibility` on `T`, it’ll panic.

source§

### impl<'tcx, K: IntoQueryParam<CrateNum> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn crate_name(self, value: ProvidedValue<'tcx>)

Gets the name of the crate.

source§

### impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn output_filenames(self, value: ProvidedValue<'tcx>)

Return the filenames where output artefacts shall be stored.

This query returns an `&Arc` because codegen backends need the value even after the `TyCtxt` has been destroyed.

source§

### impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn features_query(self, value: ProvidedValue<'tcx>)

[query description - consider adding a doc-comment!] looking up enabled feature gates

source§

### impl<'tcx, K: IntoQueryParam<()> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn crate_for_resolver(self, value: ProvidedValue<'tcx>)

[query description - consider adding a doc-comment!] the ast before macro expansion and name resolution

source§

### impl<'tcx, K: IntoQueryParam<CrateNum> + Copy> TyCtxtFeed<'tcx, K>

source

#### pub fn stripped_cfg_items(self, value: ProvidedValue<'tcx>)

Get all item paths that were stripped by a `#[cfg]` in a particular crate. Should not be called for the local crate before the resolver outputs are created, as it is only fed there.

## Trait Implementations§

source§

### impl<'tcx, KEY: Clone + Copy> Clone for TyCtxtFeed<'tcx, KEY>

source§

#### fn clone(&self) -> TyCtxtFeed<'tcx, KEY>

Returns a copy of the value. Read more
1.0.0 · source§

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more
source§

### impl<'tcx, KEY: Copy + Copy> Copy for TyCtxtFeed<'tcx, KEY>

## Auto Trait Implementations§

§

### impl<'tcx, KEY> DynSend for TyCtxtFeed<'tcx, KEY>
where KEY: DynSend,

§

### impl<'tcx, KEY> DynSync for TyCtxtFeed<'tcx, KEY>
where KEY: DynSync,

§

### impl<'tcx, KEY> !RefUnwindSafe for TyCtxtFeed<'tcx, KEY>

§

### impl<'tcx, KEY> !Send for TyCtxtFeed<'tcx, KEY>

§

### impl<'tcx, KEY> !Sync for TyCtxtFeed<'tcx, KEY>

§

### impl<'tcx, KEY> Unpin for TyCtxtFeed<'tcx, KEY>
where KEY: Unpin,

§

### impl<'tcx, KEY> !UnwindSafe for TyCtxtFeed<'tcx, KEY>

## Blanket Implementations§

source§

### impl<T> Aligned for T

source§

#### const ALIGN: Alignment = _

Alignment of `Self`.
source§

### impl<T> Any for T
where T: 'static + ?Sized,

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T
where T: Copy,

source§

#### fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T

source§

#### fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]

source§

### impl<T> Borrow<T> for T
where T: ?Sized,

source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

### impl<T, R> CollectAndApply<T, R> for T

source§

#### fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to `f(&iter.collect::<Vec<_>>())`.

§

#### type Output = R

source§

### impl<T> From<T> for T

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

### impl<T, U> Into<U> for T
where U: From<T>,

source§

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source§

### impl<P> IntoQueryParam<P> for P

source§

#### fn into_query_param(self) -> P

source§

### impl<T> MaybeResult<T> for T

§

#### type Error = !

source§

#### fn from(_: Result<T, <T as MaybeResult<T>>::Error>) -> T

source§

#### fn to_result(self) -> Result<T, <T as MaybeResult<T>>::Error>

source§

### impl<T> ToOwned for T
where T: Clone,

§

#### type Owned = T

The resulting type after obtaining ownership.
source§

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

### impl<'tcx, T> ToPredicate<'tcx, T> for T

source§

#### fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T

source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

### impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

### impl<Tcx, T> Value<Tcx> for T
where Tcx: DepContext,

source§

#### default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> T

## Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.