Struct rustc_middle::ty::context::GeneratorInteriorTypeCause[][src]

pub struct GeneratorInteriorTypeCause<'tcx> {
    pub ty: Ty<'tcx>,
    pub span: Span,
    pub scope_span: Option<Span>,
    pub yield_span: Span,
    pub expr: Option<HirId>,
}

Whenever a value may be live across a generator yield, the type of that value winds up in the GeneratorInteriorTypeCause struct. This struct adds additional information about such captured types that can be useful for diagnostics. In particular, it stores the span that caused a given type to be recorded, along with the scope that enclosed the value (which can be used to find the await that the value is live across).

For example:

async move {
    let x: T = expr;
    foo.await
    ...
}

Here, we would store the type T, the span of the value x, the “scope-span” for the scope that contains x, the expr T evaluated from, and the span of foo.await.

Fields

ty: Ty<'tcx>

Type of the captured binding.

span: Span

Span of the binding that was captured.

scope_span: Option<Span>

Span of the scope of the captured binding.

yield_span: Span

Span of .await or yield expression.

expr: Option<HirId>

Expr which the type evaluated from.

Trait Implementations

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

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

impl<'tcx, __D: TyDecoder<'tcx>> Decodable<__D> for GeneratorInteriorTypeCause<'tcx>[src]

impl<'tcx, __E: TyEncoder<'tcx>> Encodable<__E> for GeneratorInteriorTypeCause<'tcx>[src]

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

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

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

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

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

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

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

Auto Trait Implementations

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

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

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

impl<'tcx> Unpin for GeneratorInteriorTypeCause<'tcx>

impl<'tcx> !UnwindSafe for GeneratorInteriorTypeCause<'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> MaybeResult<T> for T[src]

type Error = !

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