Struct PointeeInfo
pub struct PointeeInfo {
pub safe: Option<PointerKind>,
pub size: Size,
pub align: Align,
}
Expand description
Encodes extra information we have about a pointer. Note that this information is advisory only, and backends are free to ignore it: if the information is wrong, that can cause UB, but if the information is absent, that must always be okay.
Fields§
§safe: Option<PointerKind>
If this is None
, then this is a raw pointer, so size and alignment are not guaranteed to
be reliable.
size: Size
If safe
is Some
, then the pointer is either null or dereferenceable for this many bytes.
On a function argument, “dereferenceable” here means “dereferenceable for the entire duration
of this function call”, i.e. it is UB for the memory that this pointer points to to be freed
while this function is still running.
The size can be zero if the pointer is not dereferenceable.
align: Align
If safe
is Some
, then the pointer is aligned as indicated.
Trait Implementations§
§impl Clone for PointeeInfo
impl Clone for PointeeInfo
§fn clone(&self) -> PointeeInfo
fn clone(&self) -> PointeeInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for PointeeInfo
impl Debug for PointeeInfo
impl Copy for PointeeInfo
Auto Trait Implementations§
impl DynSend for PointeeInfo
impl DynSync for PointeeInfo
impl Freeze for PointeeInfo
impl RefUnwindSafe for PointeeInfo
impl Send for PointeeInfo
impl Sync for PointeeInfo
impl Unpin for PointeeInfo
impl UnwindSafe for PointeeInfo
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
)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<T> Pointable for T
impl<T> Pointable for 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,
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: 16 bytes