Struct rustc_typeck::check::pat::TopInfo
source · Expand description
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:
match scrutinee { ... }
let _ = scrutinee;
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<_, _>`
Trait Implementations
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
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes