pub(crate) struct OutlivesSuggestionBuilder {
constraints_to_add: BTreeMap<RegionVid, Vec<RegionVid>>,
}
Expand description
Collects information about outlives constraints that needed to be added for a given MIR node corresponding to a function definition.
Adds a help note suggesting adding a where clause with the needed constraints.
Fields§
§constraints_to_add: BTreeMap<RegionVid, Vec<RegionVid>>
The list of outlives constraints that need to be added. Specifically, we map each free
region to all other regions that it must outlive. I will use the shorthand fr: outlived_frs
. Not all of these regions will already have names necessarily. Some could be
implicit free regions that we inferred. These will need to be given names in the final
suggestion message.
Implementations§
Source§impl OutlivesSuggestionBuilder
impl OutlivesSuggestionBuilder
Sourcefn region_name_is_suggestable(name: &RegionName) -> bool
fn region_name_is_suggestable(name: &RegionName) -> bool
Returns true
iff the RegionNameSource
is a valid source for an outlives
suggestion.
Sourcefn region_vid_to_name(
&self,
mbcx: &MirBorrowckCtxt<'_, '_, '_>,
region: RegionVid,
) -> Option<RegionName>
fn region_vid_to_name( &self, mbcx: &MirBorrowckCtxt<'_, '_, '_>, region: RegionVid, ) -> Option<RegionName>
Returns a name for the region if it is suggestable. See region_name_is_suggestable
.
Sourcefn compile_all_suggestions(
&self,
mbcx: &MirBorrowckCtxt<'_, '_, '_>,
) -> SmallVec<[SuggestedConstraint; 2]>
fn compile_all_suggestions( &self, mbcx: &MirBorrowckCtxt<'_, '_, '_>, ) -> SmallVec<[SuggestedConstraint; 2]>
Compiles a list of all suggestions to be printed in the final big suggestion.
Sourcepub(crate) fn collect_constraint(
&mut self,
fr: RegionVid,
outlived_fr: RegionVid,
)
pub(crate) fn collect_constraint( &mut self, fr: RegionVid, outlived_fr: RegionVid, )
Add the outlives constraint fr: outlived_fr
to the set of constraints we need to suggest.
Sourcepub(crate) fn intermediate_suggestion(
&mut self,
mbcx: &MirBorrowckCtxt<'_, '_, '_>,
errci: &ErrorConstraintInfo<'_>,
diag: &mut Diag<'_>,
)
pub(crate) fn intermediate_suggestion( &mut self, mbcx: &MirBorrowckCtxt<'_, '_, '_>, errci: &ErrorConstraintInfo<'_>, diag: &mut Diag<'_>, )
Emit an intermediate note on the given Diag
if the involved regions are suggestable.
Sourcepub(crate) fn add_suggestion(&self, mbcx: &mut MirBorrowckCtxt<'_, '_, '_>)
pub(crate) fn add_suggestion(&self, mbcx: &mut MirBorrowckCtxt<'_, '_, '_>)
If there is a suggestion to emit, add a diagnostic to the buffer. This is the final suggestion including all collected constraints.
Trait Implementations§
Source§impl Default for OutlivesSuggestionBuilder
impl Default for OutlivesSuggestionBuilder
Source§fn default() -> OutlivesSuggestionBuilder
fn default() -> OutlivesSuggestionBuilder
Auto Trait Implementations§
impl DynSend for OutlivesSuggestionBuilder
impl DynSync for OutlivesSuggestionBuilder
impl Freeze for OutlivesSuggestionBuilder
impl RefUnwindSafe for OutlivesSuggestionBuilder
impl Send for OutlivesSuggestionBuilder
impl Sync for OutlivesSuggestionBuilder
impl Unpin for OutlivesSuggestionBuilder
impl UnwindSafe for OutlivesSuggestionBuilder
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
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for 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: 24 bytes