Struct miri::borrow_tracker::tree_borrows::diagnostics::Event
source · pub struct Event {
pub transition: PermTransition,
pub access_cause: AccessCause,
pub is_foreign: bool,
pub access_range: Option<AllocRange>,
pub transition_range: Range<u64>,
pub span: Span,
}
Expand description
Complete data for an event:
Fields§
§transition: PermTransition
Transformation of permissions that occurred because of this event.
access_cause: AccessCause
Kind of the access that triggered this event.
is_foreign: bool
Relative position of the tag to the one used for the access.
access_range: Option<AllocRange>
User-visible range of the access.
None
means that this is an implicit access to the entire allocation
(used for the implicit read on protector release).
transition_range: Range<u64>
The transition recorded by this event only occurred on a subrange of
access_range
: a single access on access_range
triggers several events,
each with their own mutually disjoint transition_range
. No-op transitions
should not be recorded as events, so the union of all transition_range
is not
necessarily the entire access_range
.
No data from any transition_range
should ever be user-visible, because
both the start and end of transition_range
are entirely dependent on the
internal representation of RangeMap
which is supposed to be opaque.
What will be shown in the error message is the first byte error_offset
of
the TbError
, which should satisfy
event.transition_range.contains(error.error_offset)
.
span: Span
Line of code that triggered this event.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Event
impl RefUnwindSafe for Event
impl !Send for Event
impl !Sync for Event
impl Unpin for Event
impl UnwindSafe for Event
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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: 56 bytes