[−][src]Struct rustc_typeck::check::pat::TopInfo
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: boolWas 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<_, _>`
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
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.