Skip to main content

PoolSlot

Struct PoolSlot 

Source
pub struct PoolSlot { /* private fields */ }
Expand description

A handle to a locked memory region containing secret data.

The slot is either backed by a tier slab (mlock’d single-page pool) or a standalone SecureBuffer (guard pages + mlock, for larger allocations).

PoolSlot is Send but NOT Sync; exclusive reference semantics prevent concurrent mutation.

§Safety of the slab pointer

When origin is Slab, ptr points into a TieredPool tier’s SecureSlab which lives in a OnceLock<TieredPool> and is never dropped for the process lifetime. The pointer therefore cannot dangle as long as the process is alive.

§Safety

PoolSlot must not outlive the global pool. Only acquire via the module-level pool_acquire() and coffer_view() functions, not via a local TieredPool instance. The TieredPool::acquire() method is intentionally pub(crate) for this reason.

Implementations§

Source§

impl PoolSlot

Source

pub fn bytes(&mut self) -> &mut [u8]

Mutable access to the slot’s bytes.

Source

pub fn as_slice(&self) -> &[u8]

Read-only access to the slot’s bytes.

Source

pub fn size(&self) -> usize

Total capacity of this slot in bytes.

Trait Implementations§

Source§

impl Debug for PoolSlot

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for PoolSlot

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Send for PoolSlot

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more