reth_provider::providers

Struct StaticFileProvider

Source
pub struct StaticFileProvider<N>(/* private fields */);
Expand description

Implementations§

Source§

impl<N: NodePrimitives> StaticFileProvider<N>

Source

pub fn read_only( path: impl AsRef<Path>, watch_directory: bool, ) -> ProviderResult<Self>

Creates a new StaticFileProvider with read-only access.

Set watch_directory to true to track the most recent changes in static files. Otherwise, new data won’t be detected or queryable.

Source

pub fn read_write(path: impl AsRef<Path>) -> ProviderResult<Self>

Creates a new StaticFileProvider with read-write access.

Source

pub fn watch_directory(&self)

Watches the directory for changes and updates the in-memory index when modifications are detected.

This may be necessary, since a non-node process that owns a StaticFileProvider does not receive update_index notifications from a node that appends/truncates data.

Source§

impl<N: NodePrimitives> StaticFileProvider<N>

Source

pub fn with_custom_blocks_per_file(self, blocks_per_file: u64) -> Self

Available on crate feature test-utils only.

Set a custom number of blocks per file.

Source

pub fn with_metrics(self) -> Self

Enables metrics on the StaticFileProvider.

Source

pub fn report_metrics(&self) -> ProviderResult<()>

Reports metrics for the static files.

Source

pub fn get_segment_provider_from_block( &self, segment: StaticFileSegment, block: BlockNumber, path: Option<&Path>, ) -> ProviderResult<StaticFileJarProvider<'_, N>>

Gets the StaticFileJarProvider of the requested segment and block.

Source

pub fn get_segment_provider_from_transaction( &self, segment: StaticFileSegment, tx: TxNumber, path: Option<&Path>, ) -> ProviderResult<StaticFileJarProvider<'_, N>>

Gets the StaticFileJarProvider of the requested segment and transaction.

Source

pub fn get_segment_provider( &self, segment: StaticFileSegment, fn_range: impl Fn() -> Option<SegmentRangeInclusive>, path: Option<&Path>, ) -> ProviderResult<Option<StaticFileJarProvider<'_, N>>>

Gets the StaticFileJarProvider of the requested segment and block or transaction.

fn_range should make sure the range goes through find_fixed_range.

Source

pub fn remove_cached_provider( &self, segment: StaticFileSegment, fixed_block_range_end: BlockNumber, )

Given a segment and block range it removes the cached provider from the map.

CAUTION: cached provider should be dropped before calling this or IT WILL deadlock.

Source

pub fn delete_jar( &self, segment: StaticFileSegment, block: BlockNumber, ) -> ProviderResult<()>

Given a segment and block, it deletes the jar and all files from the respective block range.

CAUTION: destructive. Deletes files on disk.

Source

pub fn update_index( &self, segment: StaticFileSegment, segment_max_block: Option<BlockNumber>, ) -> ProviderResult<()>

Updates the inner transaction and block indexes alongside the internal cached providers in self.map.

Any entry higher than segment_max_block will be deleted from the previous structures.

If segment_max_block is None it means there’s no static file for this segment.

Source

pub fn initialize_index(&self) -> ProviderResult<()>

Initializes the inner transaction and block index

Source

pub fn check_consistency<Provider>( &self, provider: &Provider, has_receipt_pruning: bool, ) -> ProviderResult<Option<PipelineTarget>>

Ensures that any broken invariants which cannot be healed on the spot return a pipeline target to unwind to.

Two types of consistency checks are done for:

  1. When a static file fails to commit but the underlying data was changed.
  2. When a static file was committed, but the required database transaction was not.

For 1) it can self-heal if self.access.is_read_only() is set to false. Otherwise, it will return an error. For 2) the invariants below are checked, and if broken, might require a pipeline unwind to heal.

For each static file segment:

  • the corresponding database table should overlap or have continuity in their keys ([TxNumber] or [BlockNumber]).
  • its highest block should match the stage checkpoint block number if it’s equal or higher than the corresponding database table last entry.

Returns a Option of PipelineTarget::Unwind if any healing is further required.

WARNING: No static file writer should be held before calling this function, otherwise it will deadlock.

Source

pub fn check_segment_consistency( &self, segment: StaticFileSegment, ) -> ProviderResult<()>

Checks consistency of the latest static file segment and throws an error if at fault. Read-only.

Source

pub fn get_highest_static_file_block( &self, segment: StaticFileSegment, ) -> Option<BlockNumber>

Gets the highest static file block if it exists for a static file segment.

If there is nothing on disk for the given segment, this will return None.

Source

pub fn get_highest_static_file_tx( &self, segment: StaticFileSegment, ) -> Option<TxNumber>

Gets the highest static file transaction.

If there is nothing on disk for the given segment, this will return None.

Source

pub fn get_highest_static_files(&self) -> HighestStaticFiles

Gets the highest static file block for all segments.

Source

pub fn find_static_file<T>( &self, segment: StaticFileSegment, func: impl Fn(StaticFileJarProvider<'_, N>) -> ProviderResult<Option<T>>, ) -> ProviderResult<Option<T>>

Iterates through segment static_files in reverse order, executing a function until it returns some object. Useful for finding objects by [TxHash] or [BlockHash].

Source

pub fn fetch_range_with_predicate<T, F, P>( &self, segment: StaticFileSegment, range: Range<u64>, get_fn: F, predicate: P, ) -> ProviderResult<Vec<T>>
where F: FnMut(&mut StaticFileCursor<'_>, u64) -> ProviderResult<Option<T>>, P: FnMut(&T) -> bool,

Fetches data within a specified range across multiple static files.

This function iteratively retrieves data using get_fn for each item in the given range. It continues fetching until the end of the range is reached or the provided predicate returns false.

Source

pub fn fetch_range_iter<'a, T, F>( &'a self, segment: StaticFileSegment, range: Range<u64>, get_fn: F, ) -> ProviderResult<impl Iterator<Item = ProviderResult<T>> + 'a>
where F: Fn(&mut StaticFileCursor<'_>, u64) -> ProviderResult<Option<T>> + 'a, T: Debug,

Fetches data within a specified range across multiple static files.

Returns an iterator over the data

Source

pub fn directory(&self) -> &Path

Returns directory where static_files are located.

Source

pub fn get_with_static_file_or_database<T, FS, FD>( &self, segment: StaticFileSegment, number: u64, fetch_from_static_file: FS, fetch_from_database: FD, ) -> ProviderResult<Option<T>>
where FS: Fn(&Self) -> ProviderResult<Option<T>>, FD: Fn() -> ProviderResult<Option<T>>,

Retrieves data from the database or static file, wherever it’s available.

§Arguments
  • segment - The segment of the static file to check against.
  • index_key - Requested index key, usually a block or transaction number.
  • fetch_from_static_file - A closure that defines how to fetch the data from the static file provider.
  • fetch_from_database - A closure that defines how to fetch the data from the database when the static file doesn’t contain the required data or is not available.
Source

pub fn get_range_with_static_file_or_database<T, P, FS, FD>( &self, segment: StaticFileSegment, block_or_tx_range: Range<u64>, fetch_from_static_file: FS, fetch_from_database: FD, predicate: P, ) -> ProviderResult<Vec<T>>
where FS: Fn(&Self, Range<u64>, &mut P) -> ProviderResult<Vec<T>>, FD: FnMut(Range<u64>, P) -> ProviderResult<Vec<T>>, P: FnMut(&T) -> bool,

Gets data within a specified range, potentially spanning different static_files and database.

§Arguments
  • segment - The segment of the static file to query.
  • block_range - The range of data to fetch.
  • fetch_from_static_file - A function to fetch data from the static_file.
  • fetch_from_database - A function to fetch data from the database.
  • predicate - A function used to evaluate each item in the fetched data. Fetching is terminated when this function returns false, thereby filtering the data based on the provided condition.
Source

pub fn path(&self) -> &Path

Available on crate feature test-utils only.

Returns static_files directory

Source

pub fn tx_index( &self, ) -> &RwLock<HashMap<StaticFileSegment, BTreeMap<TxNumber, SegmentRangeInclusive>>>

Available on crate feature test-utils only.

Returns static_files transaction index

Trait Implementations§

Source§

impl<N: Send + Sync> BlockBodyIndicesProvider for StaticFileProvider<N>

Source§

fn block_body_indices( &self, _num: u64, ) -> ProviderResult<Option<StoredBlockBodyIndices>>

Returns the block body indices with matching number from database. Read more
Source§

impl<N: NodePrimitives> BlockHashReader for StaticFileProvider<N>

Source§

fn block_hash(&self, num: u64) -> ProviderResult<Option<B256>>

Get the hash of the block with the given number. Returns None if no block with this number exists.
Source§

fn canonical_hashes_range( &self, start: BlockNumber, end: BlockNumber, ) -> ProviderResult<Vec<B256>>

Get headers in range of block hashes or numbers Read more
Source§

fn convert_block_hash( &self, hash_or_number: HashOrNumber, ) -> Result<Option<FixedBytes<32>>, ProviderError>

Get the hash of the block with the given number. Returns None if no block with this number exists.
Source§

impl<N: NodePrimitives> BlockNumReader for StaticFileProvider<N>

Source§

fn chain_info(&self) -> ProviderResult<ChainInfo>

Returns the current info for the chain.
Source§

fn best_block_number(&self) -> ProviderResult<BlockNumber>

Returns the best block number in the chain.
Source§

fn last_block_number(&self) -> ProviderResult<BlockNumber>

Returns the last block number associated with the last canonical header in the database.
Source§

fn block_number(&self, _hash: B256) -> ProviderResult<Option<BlockNumber>>

Gets the BlockNumber for the given hash. Returns None if no block with this hash exists.
Source§

fn convert_hash_or_number( &self, id: HashOrNumber, ) -> Result<Option<u64>, ProviderError>

Gets the block number for the given BlockHashOrNumber. Returns None if no block with this hash exists. If the BlockHashOrNumber is a Number, it is returned as is.
Source§

fn convert_number( &self, id: HashOrNumber, ) -> Result<Option<FixedBytes<32>>, ProviderError>

Gets the block hash for the given BlockHashOrNumber. Returns None if no block with this number exists. If the BlockHashOrNumber is a Hash, it is returned as is.
Source§

impl<N: FullNodePrimitives<SignedTx: Value, Receipt: Value, BlockHeader: Value>> BlockReader for StaticFileProvider<N>

Source§

type Block = <N as NodePrimitives>::Block

The block type this provider reads.
Source§

fn find_block_by_hash( &self, _hash: B256, _source: BlockSource, ) -> ProviderResult<Option<Self::Block>>

Tries to find in the given block source. Read more
Source§

fn block(&self, _id: BlockHashOrNumber) -> ProviderResult<Option<Self::Block>>

Returns the block with given id from the database. Read more
Source§

fn pending_block(&self) -> ProviderResult<Option<SealedBlockFor<Self::Block>>>

Returns the pending block if available Read more
Source§

fn pending_block_with_senders( &self, ) -> ProviderResult<Option<SealedBlockWithSenders<Self::Block>>>

Returns the pending block if available Read more
Source§

fn pending_block_and_receipts( &self, ) -> ProviderResult<Option<(SealedBlockFor<Self::Block>, Vec<Self::Receipt>)>>

Returns the pending block and receipts if available.
Source§

fn block_with_senders( &self, _id: BlockHashOrNumber, _transaction_kind: TransactionVariant, ) -> ProviderResult<Option<BlockWithSenders<Self::Block>>>

Returns the block with senders with matching number or hash from database. Read more
Source§

fn sealed_block_with_senders( &self, _id: BlockHashOrNumber, _transaction_kind: TransactionVariant, ) -> ProviderResult<Option<SealedBlockWithSenders<Self::Block>>>

Returns the sealed block with senders with matching number or hash from database. Read more
Source§

fn block_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<Self::Block>>

Returns all blocks in the given inclusive range. Read more
Source§

fn block_with_senders_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<BlockWithSenders<Self::Block>>>

Returns a range of blocks from the database, along with the senders of each transaction in the blocks.
Source§

fn sealed_block_with_senders_range( &self, _range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<SealedBlockWithSenders<Self::Block>>>

Returns a range of sealed blocks from the database, along with the senders of each transaction in the blocks.
Source§

fn block_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<Self::Block>, ProviderError>

Returns the block with matching hash from the database. Read more
Source§

fn block_by_number( &self, num: u64, ) -> Result<Option<Self::Block>, ProviderError>

Returns the block with matching number from database. Read more
Source§

impl<N> Clone for StaticFileProvider<N>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<N: Debug> Debug for StaticFileProvider<N>

Source§

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

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

impl<N: NodePrimitives> Deref for StaticFileProvider<N>

Source§

type Target = StaticFileProviderInner<N>

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl<N: NodePrimitives<BlockHeader: Value>> HeaderProvider for StaticFileProvider<N>

Source§

type Header = <N as NodePrimitives>::BlockHeader

The header type this provider supports.
Source§

fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Self::Header>>

Get header by block hash
Source§

fn header_by_number( &self, num: BlockNumber, ) -> ProviderResult<Option<Self::Header>>

Get header by block number
Source§

fn header_td(&self, block_hash: &BlockHash) -> ProviderResult<Option<U256>>

Get total difficulty by block hash.
Source§

fn header_td_by_number(&self, num: BlockNumber) -> ProviderResult<Option<U256>>

Get total difficulty by block number.
Source§

fn headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Self::Header>>

Get headers in range of block numbers
Source§

fn sealed_header( &self, num: BlockNumber, ) -> ProviderResult<Option<SealedHeader<Self::Header>>>

Get a single sealed header by block number.
Source§

fn sealed_headers_while( &self, range: impl RangeBounds<BlockNumber>, predicate: impl FnMut(&SealedHeader<Self::Header>) -> bool, ) -> ProviderResult<Vec<SealedHeader<Self::Header>>>

Get sealed headers while predicate returns true or the range is exhausted.
Source§

fn is_known(&self, block_hash: &FixedBytes<32>) -> Result<bool, ProviderError>

Check if block is known
Source§

fn sealed_header_by_hash( &self, block_hash: FixedBytes<32>, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>

Retrieves the header sealed by the given block hash.
Source§

fn header_by_hash_or_number( &self, hash_or_num: HashOrNumber, ) -> Result<Option<Self::Header>, ProviderError>

Get header by block number or hash
Source§

fn sealed_headers_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<SealedHeader<Self::Header>>, ProviderError>

Get headers in range of block numbers.
Source§

impl<N: FullNodePrimitives<BlockHeader: Value>> OmmersProvider for StaticFileProvider<N>

Source§

fn ommers( &self, _id: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Header>>>

Returns the ommers/uncle headers of the given block from the database. Read more
Source§

impl<N: NodePrimitives<SignedTx: Value + SignedTransaction, Receipt: Value>> ReceiptProvider for StaticFileProvider<N>

Source§

type Receipt = <N as NodePrimitives>::Receipt

The receipt type.
Source§

fn receipt(&self, num: TxNumber) -> ProviderResult<Option<Self::Receipt>>

Get receipt by transaction number Read more
Source§

fn receipt_by_hash(&self, hash: TxHash) -> ProviderResult<Option<Self::Receipt>>

Get receipt by transaction hash. Read more
Source§

fn receipts_by_block( &self, _block: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Receipt>>>

Get receipts by block num or hash. Read more
Source§

fn receipts_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Self::Receipt>>

Get receipts by tx range.
Source§

impl<N: NodePrimitives> StaticFileWriter for StaticFileProvider<N>

Source§

type Primitives = N

The primitives type used by the static file provider.
Source§

fn get_writer( &self, block: BlockNumber, segment: StaticFileSegment, ) -> ProviderResult<StaticFileProviderRWRefMut<'_, Self::Primitives>>

Returns a mutable reference to a StaticFileProviderRW of a [StaticFileSegment].
Source§

fn latest_writer( &self, segment: StaticFileSegment, ) -> ProviderResult<StaticFileProviderRWRefMut<'_, Self::Primitives>>

Returns a mutable reference to a StaticFileProviderRW of the latest [StaticFileSegment].
Source§

fn commit(&self) -> ProviderResult<()>

Commits all changes of all StaticFileProviderRW of all [StaticFileSegment].
Source§

impl<N: NodePrimitives> StatsReader for StaticFileProvider<N>

Source§

fn count_entries<T: Table>(&self) -> ProviderResult<usize>

Fetch the number of entries in the corresponding Table. Depending on the provider, it may route to different data sources other than Table.
Source§

impl<N: NodePrimitives<SignedTx: Decompress + SignedTransaction>> TransactionsProvider for StaticFileProvider<N>

Source§

type Transaction = <N as NodePrimitives>::SignedTx

The transaction type this provider reads.
Source§

fn transaction_id(&self, tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>

Get internal transaction identifier by transaction hash. Read more
Source§

fn transaction_by_id( &self, num: TxNumber, ) -> ProviderResult<Option<Self::Transaction>>

Get transaction by id, computes hash every time so more expensive.
Source§

fn transaction_by_id_unhashed( &self, num: TxNumber, ) -> ProviderResult<Option<Self::Transaction>>

Get transaction by id without computing the hash.
Source§

fn transaction_by_hash( &self, hash: TxHash, ) -> ProviderResult<Option<Self::Transaction>>

Get transaction by transaction hash.
Source§

fn transaction_by_hash_with_meta( &self, _hash: TxHash, ) -> ProviderResult<Option<(Self::Transaction, TransactionMeta)>>

Get transaction by transaction hash and additional metadata of the block the transaction was mined in
Source§

fn transaction_block( &self, _id: TxNumber, ) -> ProviderResult<Option<BlockNumber>>

Get transaction block number
Source§

fn transactions_by_block( &self, _block_id: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Transaction>>>

Get transactions by block id.
Source§

fn transactions_by_block_range( &self, _range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Vec<Self::Transaction>>>

Get transactions by block range.
Source§

fn transactions_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Self::Transaction>>

Get transactions by tx range.
Source§

fn senders_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Address>>

Get Senders from a tx range.
Source§

fn transaction_sender(&self, id: TxNumber) -> ProviderResult<Option<Address>>

Get transaction sender. Read more
Source§

impl<N: FullNodePrimitives<SignedTx: Value, Receipt: Value, BlockHeader: Value>> TransactionsProviderExt for StaticFileProvider<N>

Source§

fn transaction_hashes_by_range( &self, tx_range: Range<TxNumber>, ) -> ProviderResult<Vec<(TxHash, TxNumber)>>

Get transaction hashes from a transaction range.
Source§

fn transaction_range_by_block_range( &self, block_range: RangeInclusive<u64>, ) -> Result<RangeInclusive<u64>, ProviderError>

Get transactions range by block range.
Source§

impl<N: NodePrimitives> WithdrawalsProvider for StaticFileProvider<N>

Source§

fn withdrawals_by_block( &self, _id: BlockHashOrNumber, _timestamp: u64, ) -> ProviderResult<Option<Withdrawals>>

Get withdrawals by block id.
Source§

fn latest_withdrawal(&self) -> ProviderResult<Option<Withdrawal>>

Get latest withdrawal from this block or earlier .

Auto Trait Implementations§

§

impl<N> Freeze for StaticFileProvider<N>

§

impl<N> !RefUnwindSafe for StaticFileProvider<N>

§

impl<N> Send for StaticFileProvider<N>
where N: Sync + Send,

§

impl<N> Sync for StaticFileProvider<N>
where N: Sync + Send,

§

impl<N> Unpin for StaticFileProvider<N>

§

impl<N> !UnwindSafe for StaticFileProvider<N>

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

Source§

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

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment from self to dst. 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
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

§

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, 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> 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
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 #44874)
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.
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
§

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
§

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

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeSendSync for T

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes