[−][src]Struct rustc_typeck::check::pat::TopInfo

pub(in check::pat) struct TopInfo<'tcx> {
    expected: Ty<'tcx>,
    origin_expr: bool,
    span: Option<Span>,
    parent_pat: Option<&'tcx Pat<'tcx>>,
}

Information about the expected type at the top level of type checking a pattern.

NOTE: This is only for use by diagnostics. Do NOT use for type checking logic!

Fields

expected: Ty<'tcx>

The expected type at the top level of type checking a pattern.

origin_expr: bool

Was the origin of the span from a scrutinee expression?

Otherwise there is no scrutinee and it could be e.g. from the type of a formal parameter.

span: Option<Span>

The span giving rise to the expected type, if one could be provided.

If origin_expr is true, then this is the span of the scrutinee as in:

This is used to point to add context in type errors. In the following example, span corresponds to the a + b expression:

error[E0308]: mismatched types
 --> src/main.rs:L:C
  |
L |    let temp: usize = match a + b {
  |                            ----- this expression has type `usize`
L |         Ok(num) => num,
  |         ^^^^^^^ expected `usize`, found enum `std::result::Result`
  |
  = note: expected type `usize`
             found type `std::result::Result<_, _>`
parent_pat: Option<&'tcx Pat<'tcx>>

This refers to the parent pattern. Used to provide extra diagnostic information on errors.

error[E0308]: mismatched types
  --> $DIR/const-in-struct-pat.rs:8:17
  |
L | struct f;
  | --------- unit struct defined here
...
L |     let Thing { f } = t;
  |                 ^
  |                 |
  |                 expected struct `std::string::String`, found struct `f`
  |                 `f` is interpreted as a unit struct, not a new binding
  |                 help: bind the struct field to a different name instead: `f: other_f`

Trait Implementations

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

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

Auto Trait Implementations

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

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

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

impl<'tcx> Unpin for TopInfo<'tcx>

impl<'tcx> !UnwindSafe for TopInfo<'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> 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]