Struct flowistry_pdg::rustc::mir::UserTypeProjections
source · pub struct UserTypeProjections {
pub contents: Vec<(UserTypeProjection, Span), Global>,
}
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.
Its 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), Global>
Auto Trait Implementations§
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