Struct rustc_hir_typeck::pat::TopInfo
source · struct TopInfo<'tcx> {
expected: Ty<'tcx>,
origin_expr: Option<&'tcx Expr<'tcx>>,
span: Option<Span>,
}
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: Option<&'tcx Expr<'tcx>>
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§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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: 32 bytes