Guarded

Trait Guarded 

Source
pub unsafe trait Guarded {
    type Target: ?Sized;

    // Required method
    fn borrow_guarded(&self) -> &Self::Target;
}
Expand description

A trait for pointer types that uphold the guard invariants, namely that the pointer must be owned, and that it must dereference into a stable address.

Required Associated Types§

Source

type Target: ?Sized

The target pointee that this pointer may dereference into. There are no real restrictions to what this type can be. However, the user must not assume that simply because a &Target reference is protected, that references indirectly derived (via Deref and other traits) would also be protected.

Required Methods§

Source

fn borrow_guarded(&self) -> &Self::Target

Borrow the pointee, into a fixed reference that can be sent directly and safely to e.g. memory-sharing completion-based I/O interfaces.

Implementors of such interfaces must however take buffers by reference to maintain safety.

Implementors§

Source§

impl<T, U> Guarded for AssertSafe<T>
where T: Deref<Target = U>, U: ?Sized,

Source§

impl<T, U> Guarded for Mapped<T, U>
where T: Guarded, U: ?Sized,

Source§

impl<T, U> Guarded for MappedMut<T, U>
where T: GuardedMut, U: ?Sized,

Source§

impl<T, U> Guarded for T
where T: Deref<Target = U> + StableDeref + 'static, U: ?Sized,