Struct linera_chain::ChainStateView

source ·
pub struct ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static,
{
Show 15 fields pub execution_state: ExecutionStateView<C>, pub execution_state_hash: RegisterView<C, Option<CryptoHash>>, pub tip_state: RegisterView<C, ChainTipState>, pub manager: ChainManager<C>, pub pending_validated_blobs: PendingBlobsView<C>, pub pending_proposed_blobs: ReentrantCollectionView<C, Owner, PendingBlobsView<C>>, pub confirmed_log: LogView<C, CryptoHash>, pub received_log: LogView<C, ChainAndHeight>, pub received_certificate_trackers: RegisterView<C, HashMap<ValidatorPublicKey, u64>>, pub inboxes: ReentrantCollectionView<C, Origin, InboxStateView<C>>, pub unskippable_bundles: QueueView<C, TimestampedBundleInInbox>, pub removed_unskippable_bundles: SetView<C, BundleInInbox>, pub outboxes: ReentrantCollectionView<C, Target, OutboxStateView<C>>, pub outbox_counters: RegisterView<C, BTreeMap<BlockHeight, u32>>, pub channels: ReentrantCollectionView<C, ChannelFullName, ChannelStateView<C>>,
}
Expand description

A view accessing the state of a chain.

Fields§

§execution_state: ExecutionStateView<C>

Execution state, including system and user applications.

§execution_state_hash: RegisterView<C, Option<CryptoHash>>

Hash of the execution state.

§tip_state: RegisterView<C, ChainTipState>

Block-chaining state.

§manager: ChainManager<C>

Consensus state.

§pending_validated_blobs: PendingBlobsView<C>

Pending validated block that is still missing blobs. The incomplete set of blobs for the pending validated block.

§pending_proposed_blobs: ReentrantCollectionView<C, Owner, PendingBlobsView<C>>

The incomplete sets of blobs for upcoming proposals.

§confirmed_log: LogView<C, CryptoHash>

Hashes of all certified blocks for this sender. This ends with block_hash and has length usize::from(next_block_height).

§received_log: LogView<C, ChainAndHeight>

Sender chain and height of all certified blocks known as a receiver (local ordering).

§received_certificate_trackers: RegisterView<C, HashMap<ValidatorPublicKey, u64>>

The number of received_log entries we have synchronized, for each validator.

§inboxes: ReentrantCollectionView<C, Origin, InboxStateView<C>>

Mailboxes used to receive messages indexed by their origin.

§unskippable_bundles: QueueView<C, TimestampedBundleInInbox>

A queue of unskippable bundles, with the timestamp when we added them to the inbox.

§removed_unskippable_bundles: SetView<C, BundleInInbox>

Unskippable bundles that have been removed but are still in the queue.

§outboxes: ReentrantCollectionView<C, Target, OutboxStateView<C>>

Mailboxes used to send messages, indexed by their target.

§outbox_counters: RegisterView<C, BTreeMap<BlockHeight, u32>>

Number of outgoing messages in flight for each block height. We use a RegisterView to prioritize speed for small maps.

§channels: ReentrantCollectionView<C, ChannelFullName, ChannelStateView<C>>

Channels able to multicast messages to subscribers.

Implementations§

source§

impl<C> ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static,

source

pub async fn execution_state( &self, ctx: &Context<'_>, ) -> Result<&ExecutionStateView<C>>

source

pub async fn execution_state_hash( &self, ctx: &Context<'_>, ) -> Result<&RegisterView<C, Option<CryptoHash>>>

source

pub async fn tip_state( &self, ctx: &Context<'_>, ) -> Result<&RegisterView<C, ChainTipState>>

source

pub async fn manager(&self, ctx: &Context<'_>) -> Result<&ChainManager<C>>

source

pub async fn pending_validated_blobs( &self, ctx: &Context<'_>, ) -> Result<&PendingBlobsView<C>>

source

pub async fn pending_proposed_blobs( &self, ctx: &Context<'_>, ) -> Result<&ReentrantCollectionView<C, Owner, PendingBlobsView<C>>>

source

pub async fn confirmed_log( &self, ctx: &Context<'_>, ) -> Result<&LogView<C, CryptoHash>>

source

pub async fn received_log( &self, ctx: &Context<'_>, ) -> Result<&LogView<C, ChainAndHeight>>

source

pub async fn received_certificate_trackers( &self, ctx: &Context<'_>, ) -> Result<&RegisterView<C, HashMap<ValidatorPublicKey, u64>>>

source

pub async fn inboxes( &self, ctx: &Context<'_>, ) -> Result<&ReentrantCollectionView<C, Origin, InboxStateView<C>>>

source

pub async fn unskippable_bundles( &self, ctx: &Context<'_>, ) -> Result<&QueueView<C, TimestampedBundleInInbox>>

source

pub async fn removed_unskippable_bundles( &self, ctx: &Context<'_>, ) -> Result<&SetView<C, BundleInInbox>>

source

pub async fn outboxes( &self, ctx: &Context<'_>, ) -> Result<&ReentrantCollectionView<C, Target, OutboxStateView<C>>>

source

pub async fn outbox_counters( &self, ctx: &Context<'_>, ) -> Result<&RegisterView<C, BTreeMap<BlockHeight, u32>>>

source

pub async fn channels( &self, ctx: &Context<'_>, ) -> Result<&ReentrantCollectionView<C, ChannelFullName, ChannelStateView<C>>>

source§

impl<C> ChainStateView<C>
where C: Context + Clone + Send + Sync + 'static, C::Extra: ExecutionRuntimeContext,

source

pub fn chain_id(&self) -> ChainId

Returns the ChainId of the chain this ChainStateView represents.

source

pub async fn query_application( &mut self, local_time: Timestamp, query: Query, service_runtime_endpoint: Option<&mut ServiceRuntimeEndpoint>, ) -> Result<QueryOutcome, ChainError>

source

pub async fn describe_application( &mut self, application_id: UserApplicationId, ) -> Result<UserApplicationDescription, ChainError>

source

pub async fn mark_messages_as_received( &mut self, target: &Target, height: BlockHeight, ) -> Result<bool, ChainError>

source

pub fn all_messages_delivered_up_to(&self, height: BlockHeight) -> bool

Returns true if there are no more outgoing messages in flight up to the given block height.

source

pub fn is_active(&self) -> bool

Invariant for the states of active chains.

source

pub fn is_closed(&self) -> bool

Returns whether this chain has been closed.

source

pub fn ensure_is_active(&self) -> Result<(), ChainError>

Invariant for the states of active chains.

source

pub async fn validate_incoming_bundles(&self) -> Result<(), ChainError>

Verifies that this chain is up-to-date and all the messages executed ahead of time have been properly received by now.

source

pub async fn next_block_height_to_receive( &self, origin: &Origin, ) -> Result<BlockHeight, ChainError>

source

pub async fn last_anticipated_block_height( &self, origin: &Origin, ) -> Result<Option<BlockHeight>, ChainError>

source

pub async fn receive_message_bundle( &mut self, origin: &Origin, bundle: MessageBundle, local_time: Timestamp, add_to_received_log: bool, ) -> Result<bool, ChainError>

Attempts to process a new bundle of messages from the given origin. Returns an internal error if the bundle doesn’t appear to be new, based on the sender’s height. The value local_time is specific to each validator and only used for round timeouts.

Returns true if incoming Subscribe messages created new outbox entries.

source

pub fn update_received_certificate_trackers( &mut self, new_trackers: BTreeMap<ValidatorPublicKey, u64>, )

Updates the received_log trackers.

source

pub async fn execute_init_message_from( &mut self, block: &ProposedBlock, local_time: Timestamp, ) -> Result<(), ChainError>

Verifies that the block’s first message is OpenChain. Initializes the chain if necessary.

source

pub fn current_committee(&self) -> Result<(Epoch, &Committee), ChainError>

source

pub fn ownership(&self) -> &ChainOwnership

source

pub async fn remove_bundles_from_inboxes( &mut self, timestamp: Timestamp, incoming_bundles: &[IncomingBundle], ) -> Result<(), ChainError>

Removes the incoming message bundles in the block from the inboxes.

source

pub async fn execute_block( &mut self, block: &ProposedBlock, local_time: Timestamp, round: Option<u32>, replaying_oracle_responses: Option<Vec<Vec<OracleResponse>>>, ) -> Result<BlockExecutionOutcome, ChainError>

Executes a block: first the incoming messages, then the main operation.

  • Modifies the state of outboxes and channels, if needed.
  • As usual, in case of errors, self may not be consistent any more and should be thrown away.
  • Returns the outcome of the execution.
source

pub fn is_child(&self) -> bool

Returns whether this is a child chain.

Trait Implementations§

source§

impl<C> ClonableView<C> for ChainStateView<C>
where C: Context + Send + Sync + Clone + 'static,

source§

fn clone_unchecked(&mut self) -> Result<Self, ViewError>

Creates a clone of this view, sharing the underlying storage context but prone to data races which can corrupt the view state.
source§

impl<C> ContainerType for ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static,

source§

async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>

Resolves a field value and outputs it as a json value async_graphql::Value. Read more
source§

fn collect_all_fields<'a>( &'a self, ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>, fields: &mut Fields<'a>, ) -> Result<(), ServerError>
where Self: Send + Sync,

Collect all the fields of the container that are queried in the selection set. Read more
source§

fn find_entity( &self, _: &ContextBase<'_, &Positioned<Field>>, _params: &ConstValue, ) -> impl Future<Output = Result<Option<ConstValue>, ServerError>> + Send

Find the GraphQL entity with the given name from the parameter. Read more
source§

impl<C> Debug for ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static + Debug,

source§

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

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

impl<C> OutputType for ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static,

source§

fn type_name() -> Cow<'static, str>

Type the name.
source§

fn create_type_info(registry: &mut Registry) -> String

Create type information in the registry and return qualified typename.
source§

async fn resolve( &self, ctx: &ContextSelectionSet<'_>, _field: &Positioned<Field>, ) -> ServerResult<Value>

Resolve an output value to async_graphql::Value.
source§

fn qualified_type_name() -> String

Qualified typename.
source§

fn introspection_type_name(&self) -> Cow<'static, str>

Introspection type name Read more
source§

impl<C> RootView<C> for ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static + Context,

source§

fn save<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<(), ViewError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Saves the root view to the database context
source§

impl<C> View<C> for ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static + Context,

source§

const NUM_INIT_KEYS: usize = 46usize

The number of keys used for the initialization
source§

fn context(&self) -> &C

Obtains a mutable reference to the internal context.
source§

fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>

Creates the keys needed for loading the view
source§

fn post_load(context: C, values: &[Option<Vec<u8>>]) -> Result<Self, ViewError>

Loads a view from the values
source§

fn load<'async_trait>( context: C, ) -> Pin<Box<dyn Future<Output = Result<Self, ViewError>> + Send + 'async_trait>>
where Self: 'async_trait,

Loads a view
source§

fn rollback(&mut self)

Discards all pending changes. After that flush should have no effect to storage.
source§

fn has_pending_changes<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns true if flushing this view would result in changes to the persistent storage.
source§

fn flush(&mut self, batch: &mut Batch) -> Result<bool, ViewError>

Persists changes to storage. This leaves the view still usable and is essentially neutral to the program running. Crash-resistant storage implementations are expected to accumulate the desired changes in the batch variable first. If the view is dropped without calling flush, staged changes are simply lost. The returned boolean indicates whether the operation removes the view or not.
source§

fn clear(&mut self)

Clears the view. That can be seen as resetting to default. If the clear is followed by a flush then all the relevant data is removed on the storage.
source§

fn new(context: C) -> Result<Self, ViewError>

Builds a trivial view that is already deleted
source§

impl<C> ObjectType for ChainStateView<C>
where C: Clone + Context + Send + Sync + 'static,

Auto Trait Implementations§

§

impl<C> !Freeze for ChainStateView<C>

§

impl<C> !RefUnwindSafe for ChainStateView<C>

§

impl<C> Send for ChainStateView<C>

§

impl<C> Sync for ChainStateView<C>

§

impl<C> Unpin for ChainStateView<C>
where C: Unpin,

§

impl<C> !UnwindSafe for ChainStateView<C>

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> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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> Conv for T

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<Choices> CoproductSubsetter<CNil, HNil> for Choices

§

type Remainder = Choices

source§

fn subset( self, ) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more
source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<To, From> DynInto<To> for From
where From: Into<To>,

source§

fn into_box(self: Box<From>) -> To

Converts a boxed object into the target type.
source§

impl<T> FmtForward for T

source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> LayoutRaw for T

source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Gets the layout of the type.
source§

impl<T, U, I> LiftInto<U, I> for T
where U: LiftFrom<T, I>,

source§

fn lift_into(self) -> U

Performs the indexed conversion.
source§

impl<T> MockResults for T

§

type Results = T

The mock native type of the results for the MockInstance.
source§

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

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<M, I> RuntimeMemory<&mut I> for M
where M: RuntimeMemory<I>,

source§

fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>

Reads length bytes from memory from the provided location.

source§

fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>

Writes the bytes to memory at the provided location.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<Source> Sculptor<HNil, HNil> for Source

§

type Remainder = Source

source§

fn sculpt(self) -> (HNil, <Source as Sculptor<HNil, HNil>>::Remainder)

Consumes the current HList and returns an HList with the requested shape. Read more
source§

impl<AnyTail> Split<HNil> for AnyTail

§

type Remainder = AnyTail

The tail of remaining elements after splitting up the list.
source§

fn split(self) -> (HNil, <AnyTail as Split<HNil>>::Remainder)

Splits the current heterogeneous list in two.
source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> TryConv for T

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

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

§

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>,

§

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

source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
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
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T

source§

impl<T> Post for T
where T: Send + Sync,