pub struct BorrowckErrors<'tcx> {
    tcx: TyCtxt<'tcx>,
    buffered_move_errors: BTreeMap<Vec<MoveOutIndex>, (PlaceRef<'tcx>, DiagnosticBuilder<'tcx, ErrorGuaranteed>)>,
    buffered: Vec<Diagnostic>,
    tainted_by_errors: Option<ErrorGuaranteed>,
}

Fields§

§tcx: TyCtxt<'tcx>§buffered_move_errors: BTreeMap<Vec<MoveOutIndex>, (PlaceRef<'tcx>, DiagnosticBuilder<'tcx, ErrorGuaranteed>)>

This field keeps track of move errors that are to be reported for given move indices.

There are situations where many errors can be reported for a single move out (see #53807) and we want only the best of those errors.

The report_use_of_moved_or_uninitialized function checks this map and replaces the diagnostic (if there is one) if the Place of the error being reported is a prefix of the Place of the previous most diagnostic. This happens instead of buffering the error. Once all move errors have been reported, any diagnostics in this map are added to the buffer to be emitted.

BTreeMap is used to preserve the order of insertions when iterating. This is necessary when errors in the map are being re-added to the error buffer so that errors with the same primary span come out in a consistent order.

§buffered: Vec<Diagnostic>

Diagnostics to be reported buffer.

§tainted_by_errors: Option<ErrorGuaranteed>

Set to Some if we emit an error during borrowck

Implementations§

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.

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: 64 bytes