Struct Transaction

Source
pub struct Transaction<Mode> {
    inner: Transaction<'static, Db>,
    metrics: TransactionMetricsGuard<Mode>,
}
Expand description

An atomic SQL transaction.

Fields§

§inner: Transaction<'static, Db>§metrics: TransactionMetricsGuard<Mode>

Implementations§

Source§

impl<Mode> Transaction<Mode>
where Mode: TransactionMode,

Source

async fn load_namespaces<Types>( &mut self, height: u64, payload_size: u64, ) -> QueryResult<NamespaceMap<Types>>
where Types: NodeType, Header<Types>: QueryableHeader<Types>, Payload<Types>: QueryablePayload<Types>,

Source§

impl<Mode: TransactionMode> Transaction<Mode>

Source

async fn time_window<Types: NodeType>( &mut self, start: u64, end: u64, limit: usize, ) -> QueryResult<TimeWindowQueryData<Header<Types>>>

Source§

impl<Mode: TransactionMode> Transaction<Mode>

Source

async fn snapshot_info<Types, State, const ARITY: usize>( &mut self, snapshot: Snapshot<Types, State, ARITY>, ) -> QueryResult<(i64, State::Commit)>
where Types: NodeType, State: MerklizedState<Types, ARITY>,

Get information identifying a Snapshot.

If the given snapshot is known to the database, this function returns

  • The block height at which the snapshot was created
  • A digest of the Merkle commitment to the snapshotted state
Source§

impl<Mode> Transaction<Mode>

Source

pub async fn load_header<Types: NodeType>( &mut self, id: impl Into<BlockId<Types>> + Send, ) -> QueryResult<Header<Types>>

Load a header from storage.

This function is similar to AvailabilityStorage::get_header, but

  • does not require the QueryablePayload<Types> bound that that trait impl does
  • makes it easier to specify types since the type parameter is on the function and not on a trait impl
  • allows type conversions for the id parameter

This more ergonomic interface is useful as loading headers is important for many SQL storage functions, not just the AvailabilityStorage interface.

Source§

impl<Mode: TransactionMode> Transaction<Mode>

Source

pub(super) async fn new(pool: &Pool<Db>, metrics: PoolMetrics) -> Result<Self>

Source§

impl Transaction<Write>

Low-level, general database queries and mutation.

Source

pub async fn upsert<'p, const N: usize, R>( &mut self, table: &str, columns: [&str; N], pk: impl IntoIterator<Item = &str>, rows: R, ) -> Result<()>
where R: IntoIterator, R::Item: 'p + FixedLengthParams<'p, N>,

Source§

impl Transaction<Write>

Query service specific mutations.

Source

pub(super) async fn delete_batch( &mut self, state_tables: Vec<String>, height: u64, ) -> Result<()>

Delete a batch of data for pruning.

Source

pub(super) async fn save_pruned_height(&mut self, height: u64) -> Result<()>

Record the height of the latest pruned header.

Trait Implementations§

Source§

impl<Types, Mode: TransactionMode> AggregatesStorage<Types> for Transaction<Mode>
where Types: NodeType, Header<Types>: QueryableHeader<Types>,

Source§

async fn aggregates_height(&mut self) -> Result<usize>

The block height for which aggregate statistics are currently available.
Source§

async fn load_prev_aggregate(&mut self) -> Result<Option<Aggregate<Types>>>

the last aggregate
Source§

impl<Mode, Types> AvailabilityStorage<Types> for Transaction<Mode>
where Types: NodeType, Mode: TransactionMode, Payload<Types>: QueryablePayload<Types>, Header<Types>: QueryableHeader<Types>,

Source§

fn get_leaf<'life0, 'async_trait>( &'life0 mut self, id: LeafId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<LeafQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_block<'life0, 'async_trait>( &'life0 mut self, id: BlockId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<BlockQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_header<'life0, 'async_trait>( &'life0 mut self, id: BlockId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<Header<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_payload<'life0, 'async_trait>( &'life0 mut self, id: BlockId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<PayloadQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_payload_metadata<'life0, 'async_trait>( &'life0 mut self, id: BlockId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<PayloadMetadata<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_vid_common<'life0, 'async_trait>( &'life0 mut self, id: BlockId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<VidCommonQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_vid_common_metadata<'life0, 'async_trait>( &'life0 mut self, id: BlockId<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<VidCommonMetadata<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_leaf_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<LeafQueryData<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_block_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<BlockQueryData<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_header_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<Header<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_payload_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<PayloadQueryData<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_payload_metadata_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<PayloadMetadata<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'static + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_vid_common_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<VidCommonQueryData<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_vid_common_metadata_range<'life0, 'async_trait, R>( &'life0 mut self, range: R, ) -> Pin<Box<dyn Future<Output = QueryResult<Vec<QueryResult<VidCommonMetadata<Types>>>>> + Send + 'async_trait>>
where R: RangeBounds<usize> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_transaction<'life0, 'async_trait>( &'life0 mut self, hash: TransactionHash<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<TransactionQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn first_available_leaf<'life0, 'async_trait>( &'life0 mut self, from: u64, ) -> Pin<Box<dyn Future<Output = QueryResult<LeafQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get the first leaf which is available in the database with height >= from.
Source§

fn get_state_cert<'life0, 'async_trait>( &'life0 mut self, epoch: u64, ) -> Pin<Box<dyn Future<Output = QueryResult<StateCertQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

impl<Mode: Debug> Debug for Transaction<Mode>

Source§

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

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

impl<Mode> DerefMut for Transaction<Mode>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<Mode, Types> ExplorerStorage<Types> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, Payload<Types>: QueryablePayload<Types>, Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>, Transaction<Types>: ExplorerTransaction<Types>, BalanceAmount<Types>: Into<MonetaryValue>,

Source§

fn get_block_summaries<'life0, 'async_trait>( &'life0 mut self, request: GetBlockSummariesRequest<Types>, ) -> Pin<Box<dyn Future<Output = Result<Vec<BlockSummary<Types>>, GetBlockSummariesError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_block_summaries is a method that retrieves a list of block summaries from the blockchain. The list is generated from the given GetBlockSummariesRequest.
Source§

fn get_block_detail<'life0, 'async_trait>( &'life0 mut self, request: BlockIdentifier<Types>, ) -> Pin<Box<dyn Future<Output = Result<BlockDetail<Types>, GetBlockDetailError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_block_detail is a method that retrieves the details of a specific block from the blockchain. The block is identified by the given BlockIdentifier.
Source§

fn get_transaction_summaries<'life0, 'async_trait>( &'life0 mut self, request: GetTransactionSummariesRequest<Types>, ) -> Pin<Box<dyn Future<Output = Result<Vec<TransactionSummary<Types>>, GetTransactionSummariesError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_transaction_summaries is a method that retrieves a list of transaction summaries from the blockchain. The list is generated from the given GetTransactionSummariesRequest.
Source§

fn get_transaction_detail<'life0, 'async_trait>( &'life0 mut self, request: TransactionIdentifier<Types>, ) -> Pin<Box<dyn Future<Output = Result<TransactionDetailResponse<Types>, GetTransactionDetailError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_transaction_detail is a method that retrieves the details of a specific transaction from the blockchain. The transaction is identified by the given TransactionIdentifier.
Source§

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

get_explorer_summary is a method that retrieves a summary overview of the blockchain. This is useful for displaying information that indicates the overall status of the block chain.
Source§

fn get_search_results<'life0, 'async_trait>( &'life0 mut self, search_query: TaggedBase64, ) -> Pin<Box<dyn Future<Output = Result<SearchResult<Types>, GetSearchResultsError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_search_results is a method that retrieves the results of a search query against the blockchain. The results are generated from the given query string.
Source§

impl<Mode: TransactionMode> MerklizedStateHeightStorage for Transaction<Mode>

Source§

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

Source§

impl<Mode, Types, State, const ARITY: usize> MerklizedStateStorage<Types, State, ARITY> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, State: MerklizedState<Types, ARITY> + 'static,

Source§

fn get_path<'life0, 'async_trait>( &'life0 mut self, snapshot: Snapshot<Types, State, ARITY>, key: State::Key, ) -> Pin<Box<dyn Future<Output = QueryResult<MerkleProof<State::Entry, State::Key, State::T, ARITY>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Retrieves a Merkle path from the database

Source§

impl<Mode, Types> NodeStorage<Types> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, Header<Types>: QueryableHeader<Types>,

Source§

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

Source§

fn count_transactions_in_range<'life0, 'async_trait>( &'life0 mut self, range: impl 'async_trait + RangeBounds<usize> + Send, namespace: Option<NamespaceId<Types>>, ) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn payload_size_in_range<'life0, 'async_trait>( &'life0 mut self, range: impl 'async_trait + RangeBounds<usize> + Send, namespace: Option<NamespaceId<Types>>, ) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn vid_share<'life0, 'async_trait, ID>( &'life0 mut self, id: ID, ) -> Pin<Box<dyn Future<Output = QueryResult<VidShare>> + Send + 'async_trait>>
where ID: Into<BlockId<Types>> + Send + Sync + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

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

Search the database for missing objects and generate a report.
Source§

fn get_header_window<'life0, 'async_trait>( &'life0 mut self, start: impl 'async_trait + Into<WindowStart<Types>> + Send + Sync, end: u64, limit: usize, ) -> Pin<Box<dyn Future<Output = QueryResult<TimeWindowQueryData<Header<Types>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

impl<Mode: TransactionMode> PrunedHeightStorage for Transaction<Mode>

Source§

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

Source§

impl<Mode: TransactionMode> Transaction for Transaction<Mode>

Source§

async fn commit(self) -> Result<()>

Source§

fn revert(self) -> impl Future + Send

Source§

impl<Types: NodeType> UpdateAggregatesStorage<Types> for Transaction<Write>
where Header<Types>: QueryableHeader<Types>,

Source§

async fn update_aggregates( &mut self, prev: Aggregate<Types>, blocks: &[PayloadMetadata<Types>], ) -> Result<Aggregate<Types>>

Update aggregate statistics based on a new block.
Source§

impl<Types> UpdateAvailabilityStorage<Types> for Transaction<Write>
where Types: NodeType, Payload<Types>: QueryablePayload<Types>, Header<Types>: QueryableHeader<Types>,

Source§

async fn insert_leaf(&mut self, leaf: LeafQueryData<Types>) -> Result<()>

Source§

async fn insert_block(&mut self, block: BlockQueryData<Types>) -> Result<()>

Source§

async fn insert_vid( &mut self, common: VidCommonQueryData<Types>, share: Option<VidShare>, ) -> Result<()>

Source§

async fn insert_state_cert( &mut self, state_cert: StateCertQueryData<Types>, ) -> Result<()>

Source§

impl<Types: NodeType, State: MerklizedState<Types, ARITY>, const ARITY: usize> UpdateStateData<Types, State, ARITY> for Transaction<Write>

Source§

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

Source§

fn insert_merkle_nodes<'life0, 'async_trait>( &'life0 mut self, proof: MerkleProof<State::Entry, State::Key, State::T, ARITY>, traversal_path: Vec<usize>, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

impl<Mode> Deref for Transaction<Mode>

Source§

type Target = Transaction<'static, Postgres>

The resulting type after dereferencing.
Source§

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

Dereferences the value.

Auto Trait Implementations§

§

impl<Mode> Freeze for Transaction<Mode>

§

impl<Mode> !RefUnwindSafe for Transaction<Mode>

§

impl<Mode> Send for Transaction<Mode>
where Mode: Send,

§

impl<Mode> Sync for Transaction<Mode>
where Mode: Sync,

§

impl<Mode> Unpin for Transaction<Mode>
where Mode: Unpin,

§

impl<Mode> !UnwindSafe for Transaction<Mode>

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
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

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

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

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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
§

impl<T> Conv for T

§

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

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

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

§

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

Deserializes using the given deserializer
§

impl<T> Downcast for T
where T: Any,

§

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

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

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

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

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

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

§

impl<T> Instrument for T

§

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

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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
§

impl<T> LayoutRaw for T

§

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

Gets the layout of the type.
§

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

§

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
§

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
§

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
§

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
§

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
§

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.
§

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.
§

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.
§

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.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Pointee for T

§

type Metadata = ()

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

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

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

Immutable access to a value. Read more
§

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

Mutable access to a value. Read more
§

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
§

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
§

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
§

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
§

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
§

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
§

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

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

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

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

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.
§

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.
§

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.
§

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.
§

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.
§

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.
§

impl<T> TryConv for T

§

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

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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
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
§

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