Skip to main content

LowLevelDriveOperation

Enum LowLevelDriveOperation 

Source
pub enum LowLevelDriveOperation {
    GroveOperation(QualifiedGroveDbOp),
    FunctionOperation(FunctionOp),
    CalculatedCostOperation(OperationCost),
    PreCalculatedFeeResult(FeeResult),
}
Expand description

Drive operation

Variants§

§

GroveOperation(QualifiedGroveDbOp)

Grove operation

§

FunctionOperation(FunctionOp)

A drive operation

§

CalculatedCostOperation(OperationCost)

Calculated cost operation

§

PreCalculatedFeeResult(FeeResult)

Pre Calculated Fee Result

Implementations§

Source§

impl LowLevelDriveOperation

Source

pub fn consume_to_fees_v0( drive_operations: Vec<LowLevelDriveOperation>, epoch: &Epoch, epochs_per_era: u16, fee_version: &FeeVersion, previous_fee_versions: Option<&CachedEpochIndexFeeVersions>, ) -> Result<Vec<FeeResult>, Error>

Returns a list of the costs of the Drive operations. Should only be used by Calculate fee

Source

pub fn operation_cost(self) -> Result<OperationCost, Error>

Returns the cost of this operation

Source

pub fn combine_cost_operations( operations: &[LowLevelDriveOperation], ) -> OperationCost

Filters the groveDB ops from a list of operations and puts them in a GroveDbOpBatch.

Source

pub fn grovedb_operations_batch( insert_operations: &[LowLevelDriveOperation], ) -> GroveDbOpBatch

Filters the groveDB ops from a list of operations and puts them in a GroveDbOpBatch.

Source

pub fn grovedb_operations_batch_consume( insert_operations: Vec<LowLevelDriveOperation>, ) -> GroveDbOpBatch

Filters the groveDB ops from a list of operations and puts them in a GroveDbOpBatch.

Source

pub fn grovedb_operations_batch_consume_with_leftovers( insert_operations: Vec<LowLevelDriveOperation>, ) -> (GroveDbOpBatch, Vec<LowLevelDriveOperation>)

Filters the groveDB ops from a list of operations and puts them in a GroveDbOpBatch.

Source

pub fn grovedb_operations_consume( insert_operations: Vec<LowLevelDriveOperation>, ) -> Vec<QualifiedGroveDbOp>

Filters the groveDB ops from a list of operations and collects them in a Vec<QualifiedGroveDbOp>.

Source

pub fn for_known_path_key_empty_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty tree at the given path and key

Source

pub fn for_known_path_key_empty_sum_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty sum tree at the given path and key

Source

pub fn for_known_path_key_empty_big_sum_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty sum tree at the given path and key

Source

pub fn for_known_path_key_empty_count_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty count tree at the given path and key

Source

pub fn for_known_path_key_empty_count_sum_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty count tree at the given path and key

Source

pub fn for_known_path_key_empty_non_counted_normal_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty NormalTree wrapped in Element::NonCounted at the given path and key. The wrapper makes the inserted subtree contribute 0 to a parent count tree’s aggregate (per grovedb #654). Used by the index-walker for sibling continuations inside a range_countable value tree, so e.g. a compound byColorShape continuation under a byColor value tree (which is a CountTree) doesn’t pollute the byColor count.

Source

pub fn for_known_path_key_empty_non_counted_tree( path: Vec<Vec<u8>>, key: Vec<u8>, tree_type: TreeType, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty tree of the given tree_type wrapped in Element::NonCounted. The wrapper makes the inserted subtree contribute 0 to a parent count tree’s aggregate count (per grovedb #654), regardless of the inner tree variant.

Used by the index walker for sibling continuations inside a range_countable value tree (a CountTree). Most continuations are plain NormalTree, but in nested-range_countable cases (e.g. an index [color] is range-countable AND a deeper compound index [color, size] is also range-countable), the continuation property-name tree at "size" is itself a ProvableCountTree and must still contribute 0 to the parent <c1> CountTree.

Returns an error for tree variants whose NonCounted wrapping hasn’t been validated end-to-end yet (currently anything outside NormalTree / CountTree / ProvableCountTree).

Source

pub fn for_known_path_key_empty_not_summed_tree( path: Vec<Vec<u8>>, key: Vec<u8>, tree_type: TreeType, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty sum-bearing tree wrapped in Element::NotSummed (grovedb PR 670). The wrapper makes the inserted subtree contribute 0 to a parent sum tree’s running sum while still allowing any count it carries to propagate normally. Used by the index walker for continuation property-name trees inside a summable-but-not-countable value tree. For continuations under a count+sum parent, use Self::for_known_path_key_empty_not_counted_or_summed_tree.

Source

pub fn wrap_in_non_aggregated_for_parent_tree_type( path: Vec<Vec<u8>>, key: Vec<u8>, aggregating_parent_tree_type: TreeType, inner_tree_type: TreeType, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty inner tree wrapped in the wrapper variant appropriate for an aggregating_parent_tree_type.

Dispatcher around the three concrete wrapper helpers (Self::for_known_path_key_empty_non_counted_tree / Self::for_known_path_key_empty_not_summed_tree / Self::for_known_path_key_empty_not_counted_or_summed_tree) keyed on the parent’s tree type — the wrapper exists to suppress contribution to the parent’s aggregate, so the parent’s kind picks the wrapper:

  • Pure count parents (CountTree / ProvableCountTree) → Element::NonCounted.
  • Pure sum parents (SumTree / BigSumTree / ProvableSumTree) → Element::NotSummed.
  • Combined count+sum parents (CountSumTree / ProvableCountSumTree / ProvableCountProvableSumTree) → Element::NotCountedOrSummed.
  • Non-aggregating parents (NormalTree, etc.) — no wrapping needed; caller should use crate::fees::op::LowLevelDriveOperationTreeTypeConverter::empty_tree_operation_for_known_path_key directly. This dispatcher rejects them with NotSupported so an upstream bug surfaces immediately rather than silently emitting an unwrapped child that pollutes a future parent.

inner_tree_type is the tree variant being inserted under the parent — typically a property-name continuation tree (NormalTree / CountTree / ProvableCountTree / their sum-bearing siblings).

Source

pub fn for_known_path_key_empty_not_counted_or_summed_tree( path: Vec<Vec<u8>>, key: Vec<u8>, tree_type: TreeType, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty sum-bearing tree wrapped in Element::NotCountedOrSummed (grovedb PR 670). Suppresses BOTH count and sum propagation to the parent — used for continuation property-name trees under a count+sum aggregating value tree (CountSumTree / ProvableCountSumTree / ProvableCountProvableSumTree). Same accepted inner-type set as Self::for_known_path_key_empty_not_summed_tree.

Source

pub fn for_known_path_key_empty_tree_contributing_zero_to_parent( path: Vec<Vec<u8>>, key: Vec<u8>, aggregating_parent_tree_type: TreeType, inner_tree_type: TreeType, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty continuation tree under an aggregating parent so it contributes zero to every axis the parent aggregates — the v2 index walkers’ replacement for Self::wrap_in_non_aggregated_for_parent_tree_type.

The v0 dispatcher above covers only the diagonal of the parent×inner matrix (count parent + count-ish inner, sum parent + sum-bearing inner, count+sum parent + sum-bearing inner) and errors on everything else, which made shared-prefix aggregate contracts (e.g. a summable [a] next to a plain compound [a, b]) reject every document insert. This dispatcher completes the matrix using only combinations grovedb accepts:

  • CountTree parent → Element::NonCounted(inner) for any inner tree variant (a NonCounted child contributes 0 to the count; the parent has no sum axis).
  • CountSumTree parent → sum-bearing inner: Element::NotCountedOrSummed(inner); non-sum inner: Element::NonCounted(inner) (count suppressed by the wrapper, sum contribution of a non-sum inner is 0 by definition — sum_value_or_default() returns 0 for it).
  • SumTree / BigSumTree / ProvableSumTree parent → sum-bearing inner: Element::NotSummed(inner); non-sum inner: no wrapper at all — a non-sum child already contributes 0 to a sum-only parent, and grovedb has no NotSummed(non-sum) form.
  • Provable count-bearing parents (ProvableCountTree / ProvableCountSumTree / ProvableCountProvableSumTree) → NotSupported. These commit their count into every node hash and reject count-suppressed children at grovedb’s insert guards (TreeType::accepts_non_counted_children / accepts_not_counted_or_summed_children), so callers must demote the parent first — see crate::drive::document::index_level_tree_types.
  • Non-aggregating parents → NotSupported; use crate::fees::op::LowLevelDriveOperationTreeTypeConverter::empty_tree_operation_for_known_path_key directly.

Only reachable from the v2 index walkers (platform-version gated); the v0 dispatcher stays byte-identical for the frozen v0/v1 walkers.

Source

pub fn for_known_path_key_empty_non_counted_any_tree( path: Vec<Vec<u8>>, key: Vec<u8>, tree_type: TreeType, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty tree of any of the nine standard merk tree variants wrapped in Element::NonCounted. Extends Self::for_known_path_key_empty_non_counted_tree’s accepted set (NormalTree / CountTree / ProvableCountTree) with the six sum-bearing variants: Element::new_non_counted accepts any non-wrapper inner, and under the only parents the v2 walkers use it for (CountTree, CountSumTree — both without per-node count commitments) the wrapper suppresses the count contribution while a sum-bearing inner’s sum still propagates on the parent’s sum axis if it has one — which is exactly the v0-diagonal behavior for count-only parents, and unreachable for CountSumTree parents (the zero-contribution dispatcher routes their sum-bearing inners through NotCountedOrSummed instead).

Kept separate from the frozen v0 helper so pre-v14 consensus behavior stays byte-identical.

Source

pub fn for_known_path_key_empty_provable_count_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty provable count tree at the given path and key

Source

pub fn for_known_path_key_empty_provable_sum_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty provable sum tree at the given path and key. The provable variant commits aggregated sub-sums to every internal merk node, enabling O(log n) AggregateSumOnRange proofs over range queries on the property whose values feed the tree.

Used by the index walker for property-name trees of indexes that declare rangeSummable: true (mirrors the count-side Self::for_known_path_key_empty_provable_count_tree).

Source

pub fn for_known_path_key_empty_provable_count_sum_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty provable count-sum tree at the given path and key. Pre-PR-670 variant: per-node counts committed to every internal merk node, but the sum is only carried at the root (not per-node). Use this when an index declares rangeCountable: true plus non-range summable: "<prop>" — count queries get the AggregateCountOnRange benefit while sum queries return only the root total.

Source

pub fn for_known_path_key_empty_provable_count_provable_sum_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty provable-count-provable-sum tree (PCPS) at the given path and key. The grovedb PR 670 newcomer: both per-node counts AND per-node sums committed to every internal merk node, so a single tree can answer both AggregateCountOnRange, AggregateSumOnRange, AND the new AggregateCountAndSumOnRange (combined) range queries.

Used by the index walker for property-name trees of indexes that declare BOTH rangeCountable: true AND rangeSummable: true, and for primary-key trees that declare both at the doctype level. The dispatch table in crate::drive::document::primary_key_tree_type’s v1 arm picks TreeType::ProvableCountProvableSumTree for these cases.

Source

pub fn for_estimated_path_key_empty_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty tree at the given path and key

Source

pub fn for_estimated_path_key_empty_sum_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty sum tree at the given path and key

Source

pub fn for_estimated_path_key_empty_count_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty count tree at the given (estimated) path and key

Source

pub fn for_estimated_path_key_empty_provable_count_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty provable count tree at the given (estimated) path and key

Source

pub fn for_estimated_path_key_empty_provable_sum_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Cost-estimation analog of Self::for_known_path_key_empty_provable_sum_tree. See its doc.

Source

pub fn for_estimated_path_key_empty_count_sum_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Cost-estimation analog of Self::for_known_path_key_empty_count_sum_tree. See its doc.

Source

pub fn for_estimated_path_key_empty_provable_count_sum_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Cost-estimation analog of Self::for_known_path_key_empty_provable_count_sum_tree. See its doc.

Source

pub fn for_estimated_path_key_empty_provable_count_provable_sum_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Source

pub fn for_known_path_key_empty_provable_count_indexed_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sets GroveOperation for inserting an empty provable count-indexed tree (PCIT, grovedb PR 657) at the given path and key. The primary Merk is a byte-compatible mirror of ProvableCountTree, so every existing AggregateCountOnRange read keeps working against it; what the indexed variant adds is one ordered secondary Merk keyed by (count_be ‖ child_key), which is what makes “top / bottom K groups by document count” O(log n + k) with a proof.

Used at contract registration (and by the index walkers when a deeper level is materialized lazily) for an index that declares rankedCountable: true while its range layout is count-only. An index that also declares rangeSummable lays out as PCPS underneath and therefore takes the multi-axis Self::for_known_path_key_empty_provable_count_provable_sum_indexed_tree path instead, even when Count is its only ranking axis.

Source

pub fn for_known_path_key_empty_provable_sum_indexed_tree( path: Vec<Vec<u8>>, key: Vec<u8>, storage_flags: Option<&StorageFlags>, ) -> Self

Sum-axis counterpart of Self::for_known_path_key_empty_provable_count_indexed_tree: an empty provable sum-indexed tree (PSIT) whose primary mirrors ProvableSumTree and whose single secondary is keyed by (sum_sortable_be ‖ child_key).

Source

pub fn for_known_path_key_empty_provable_count_provable_sum_indexed_tree( path: Vec<Vec<u8>>, key: Vec<u8>, ranked_axes: Vec<(u8, Option<Vec<u8>>)>, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Sets GroveOperation for inserting an empty provable count + provable sum indexed tree (PCPSIT, grovedb PR 657) at the given path and key, carrying ranked_axes — the canonical (axis_tag, secondary_root_key) TLV, sorted ascending by tag with no duplicates and 1..=3 entries. Every secondary starts empty, so each root key is None.

Unlike the two single-axis helpers this one returns a Result: the axes list is caller-supplied and grovedb validates it (Element::validate_pcpsit_axes), because an out-of-order, duplicated or empty TLV would still be hashed into the parent via axes_digest and produce a tree whose secondaries nothing can address.

Source

pub fn for_known_path_key_empty_indexed_tree( path: Vec<Vec<u8>>, key: Vec<u8>, tree_type: TreeType, ranked_axes: &[IndexAxis], storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Dispatcher over the three indexed-tree constructors, keyed on the resolved tree_type and the ranking axes that produced it (see [crate::drive::document::ranked_index_tree_type]).

ranked_axes must be non-empty and canonical; the single-axis variants additionally require that the axis matches the variant, since their element shape hard-codes which aggregate the one secondary is keyed by. Any other combination is an upstream resolution bug and is rejected rather than silently narrowed.

Source

pub fn for_estimated_path_key_empty_provable_count_indexed_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Source

pub fn for_estimated_path_key_empty_provable_sum_indexed_tree( path: KeyInfoPath, key: KeyInfo, storage_flags: Option<&StorageFlags>, ) -> Self

Source

pub fn for_estimated_path_key_empty_provable_count_provable_sum_indexed_tree( path: KeyInfoPath, key: KeyInfo, ranked_axes: Vec<(u8, Option<Vec<u8>>)>, storage_flags: Option<&StorageFlags>, ) -> Result<Self, Error>

Source

pub fn insert_for_known_path_key_element( path: Vec<Vec<u8>>, key: Vec<u8>, element: Element, ) -> Self

Sets GroveOperation for inserting an element at the given path and key

Source

pub fn replace_for_known_path_key_element( path: Vec<Vec<u8>>, key: Vec<u8>, element: Element, ) -> Self

Sets GroveOperation for replacement of an element at the given path and key

Source

pub fn patch_for_known_path_key_element( path: Vec<Vec<u8>>, key: Vec<u8>, element: Element, change_in_bytes: i32, ) -> Self

Sets GroveOperation for patching of an element at the given path and key This is different from replacement which does not add or delete bytes

Source

pub fn insert_for_estimated_path_key_element( path: KeyInfoPath, key: KeyInfo, element: Element, ) -> Self

Sets GroveOperation for inserting an element at an unknown estimated path and key

Source

pub fn replace_for_estimated_path_key_element( path: KeyInfoPath, key: KeyInfo, element: Element, ) -> Self

Sets GroveOperation for replacement of an element at an unknown estimated path and key

Source

pub fn refresh_reference_for_known_path_key_reference_info( path: Vec<Vec<u8>>, key: Vec<u8>, reference_path_type: ReferencePathType, max_reference_hop: MaxReferenceHop, flags: Option<ElementFlags>, trust_refresh_reference: bool, ) -> Self

Sets GroveOperation for refresh of a reference at the given path and key

Source

pub fn refresh_reference_with_sum_item_for_known_path_key_reference_info( path: Vec<Vec<u8>>, key: Vec<u8>, reference_path_type: ReferencePathType, max_reference_hop: MaxReferenceHop, sum_value: i64, flags: Option<ElementFlags>, trust_refresh_reference: bool, ) -> Self

Sets GroveOperation for refresh of a grovedb::Element::ReferenceWithSumItem at the given path and key, overriding the carried sum with sum_value.

Used by document-update paths on summable indexes: when the summed property’s value changes but the index keys do not, the reference body stays the same but its sum contribution must be rewritten so ancestor SumTree / ProvableCountSumTree / ProvableCountProvableSumTree aggregates pick up the delta.

Mirrors Self::refresh_reference_for_known_path_key_reference_info but emits a grovedb RefreshReference op in SumItemReference* mode instead of PlainReference* mode.

Trait Implementations§

Source§

impl Debug for LowLevelDriveOperation

Source§

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

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

impl Eq for LowLevelDriveOperation

Source§

impl PartialEq for LowLevelDriveOperation

Source§

fn eq(&self, other: &LowLevelDriveOperation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for LowLevelDriveOperation

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Conv for T

§

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

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

impl<T> CostsExt for T

§

fn wrap_with_cost(self, cost: OperationCost) -> CostContext<Self>
where Self: Sized,

Wraps any value into a CostContext object with provided costs.
§

fn wrap_fn_cost( self, f: impl FnOnce(&Self) -> OperationCost, ) -> CostContext<Self>
where Self: Sized,

Wraps any value into CostContext object with costs computed using the value getting wrapped.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

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, U> IntoOnNetwork<U> for T
where U: FromOnNetwork<T>,

§

fn into_on_network(self, network: Network) -> U

Calls U::from_on_network(self).

§

impl<T, U> IntoPlatformVersioned<U> for T
where U: FromPlatformVersioned<T>,

§

fn into_platform_versioned(self, platform_version: &PlatformVersion) -> U

Performs the conversion.
§

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

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

§

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

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

fn try_from_versioned( value: U, _grove_version: &GroveVersion, ) -> Result<T, <T as TryFromVersioned<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<T, U> TryIntoPlatformVersioned<U> for T
where U: TryFromPlatformVersioned<T>,

§

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

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

fn try_into_platform_versioned( self, platform_version: &PlatformVersion, ) -> Result<U, <U as TryFromPlatformVersioned<T>>::Error>

Performs the conversion.
§

impl<T, U> TryIntoVersioned<U> for T
where U: TryFromVersioned<T>,

§

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

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

fn try_into_versioned( self, grove_version: &GroveVersion, ) -> Result<U, <U as TryFromVersioned<T>>::Error>

Performs the conversion.
§

impl<T, U> TryIntoWithBlockHashLookup<U> for T
where U: TryFromWithBlockHashLookup<T>,

§

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

§

fn try_into_with_block_hash_lookup<F>( self, block_hash_lookup: F, network: Network, ) -> Result<U, <T as TryIntoWithBlockHashLookup<U>>::Error>
where F: Fn(&BlockHash) -> Option<u32>,

Converts self into T, using a block hash lookup function.
§

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