pub struct UserTypeProjections {
pub contents: Vec<(UserTypeProjection, Span)>,
}Expand description
A collection of projections into user types.
They are projections because a binding can occur a part of a parent pattern that has been ascribed a type.
It’s a collection because there can be multiple type ascriptions on the path from the root of the pattern down to the binding itself.
An example:
ⓘ
struct S<'a>((i32, &'a str), String);
let S((_, w): (i32, &'static str), _): S = ...;
// ------ ^^^^^^^^^^^^^^^^^^^ (1)
// --------------------------------- ^ (2)The highlights labelled (1) show the subpattern (_, w) being
ascribed the type (i32, &'static str).
The highlights labelled (2) show the whole pattern being
ascribed the type S.
In this example, when we descend to w, we will have built up the
following two projected types:
- base:
S, projection:(base.0).1 - base:
(i32, &'static str), projection:base.1
The first will lead to the constraint w: &'1 str (for some
inferred region '1). The second will lead to the constraint w: &'static str.
Fields§
§contents: Vec<(UserTypeProjection, Span)>Auto Trait Implementations§
impl Freeze for UserTypeProjections
impl RefUnwindSafe for UserTypeProjections
impl Send for UserTypeProjections
impl Sync for UserTypeProjections
impl Unpin for UserTypeProjections
impl UnwindSafe for UserTypeProjections
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
Mutably borrows from an owned value. Read more