pub struct BorrowFacts {
pub loan_issued_at: Vec<(u32, u32)>,
pub cfg_edge: Vec<(u32, u32)>,
pub invalidates: Vec<(u32, u32)>,
pub use_of_loan: Vec<(u32, u32)>,
pub loan_info: HashMap<u32, LoanInfo>,
pub potential_conflicts: Vec<(u32, u32)>,
}Expand description
Input facts extracted from MIR for the Datafrog solver.
Fields§
§loan_issued_at: Vec<(u32, u32)>(loan_id, point) — loan was created at this point
cfg_edge: Vec<(u32, u32)>(from_point, to_point) — control flow edge
invalidates: Vec<(u32, u32)>(point, loan_id) — this point invalidates the loan (drop, reassignment)
use_of_loan: Vec<(u32, u32)>(loan_id, point) — the loan (reference) is used at this point
loan_info: HashMap<u32, LoanInfo>Loan metadata for error reporting.
potential_conflicts: Vec<(u32, u32)>Points where two loans conflict (same place, incompatible borrows).
Trait Implementations§
Source§impl Debug for BorrowFacts
impl Debug for BorrowFacts
Source§impl Default for BorrowFacts
impl Default for BorrowFacts
Source§fn default() -> BorrowFacts
fn default() -> BorrowFacts
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for BorrowFacts
impl RefUnwindSafe for BorrowFacts
impl Send for BorrowFacts
impl Sync for BorrowFacts
impl Unpin for BorrowFacts
impl UnsafeUnpin for BorrowFacts
impl UnwindSafe for BorrowFacts
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
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>
Converts
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>
Converts
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 more