Skip to main content

ImmutableBlock

Struct ImmutableBlock 

Source
pub struct ImmutableBlock<T: BlockMetadata> { /* private fields */ }
Expand description

RAII guard for a block in the Registered state.

An ImmutableBlock is the primary handle through which callers interact with registered blocks. It is reference-counted (Clone-able) and each clone independently tracks the inflight_immutable metric gauge, so the gauge reflects the total number of outstanding references across the system.

§Obtaining an ImmutableBlock

§State transitions

§Clone behaviour

Cloning an ImmutableBlock increments inflight_immutable; dropping a clone decrements it. The underlying registered block is shared via Arc, so clones are cheap.

§Drop behaviour

Dropping the last strong reference (including internal pool references) triggers the block’s return to the inactive or reset pool. Every drop decrements the inflight_immutable gauge.

Implementations§

Source§

impl<T: BlockMetadata> ImmutableBlock<T>

Source

pub fn downgrade(&self) -> WeakBlock<T>

Creates a WeakBlock that references the same registered block without preventing it from being evicted.

Source

pub fn block_id(&self) -> BlockId

Returns the BlockId assigned to this block.

Source

pub fn sequence_hash(&self) -> SequenceHash

Returns the SequenceHash that identifies this block’s content.

Source

pub fn registration_handle(&self) -> BlockRegistrationHandle

Returns a clone of the BlockRegistrationHandle for this block.

Source

pub fn use_count(&self) -> usize

Returns the number of strong (Arc) references to the underlying registered block, including internal pool references.

Trait Implementations§

Source§

impl<T: BlockMetadata> Clone for ImmutableBlock<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: BlockMetadata> Debug for ImmutableBlock<T>

Source§

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

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

impl<T: BlockMetadata> Drop for ImmutableBlock<T>

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

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for ImmutableBlock<T>

§

impl<T> !UnwindSafe for ImmutableBlock<T>

§

impl<T> Freeze for ImmutableBlock<T>

§

impl<T> Send for ImmutableBlock<T>

§

impl<T> Sync for ImmutableBlock<T>

§

impl<T> Unpin for ImmutableBlock<T>

§

impl<T> UnsafeUnpin for ImmutableBlock<T>

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> BlockMetadata for T
where T: Clone + Send + Sync + 'static,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<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