Query

Struct Query 

pub struct Query {
    pub items: Vec<QueryItem>,
    pub default_subquery_branch: SubqueryBranch,
    pub conditional_subquery_branches: Option<IndexMap<QueryItem, SubqueryBranch>>,
    pub left_to_right: bool,
    pub add_parent_tree_on_subquery: bool,
}
Expand description

Query represents one or more keys or ranges of keys, which can be used to resolve a proof which will include all the requested values.

Fields§

§items: Vec<QueryItem>

Items

§default_subquery_branch: SubqueryBranch

Default subquery branch

§conditional_subquery_branches: Option<IndexMap<QueryItem, SubqueryBranch>>

Conditional subquery branches

§left_to_right: bool

Left to right?

§add_parent_tree_on_subquery: bool

When true, the parent tree element (e.g. a CountTree or SumTree) is included in query results alongside its subquery children.

§Known limitation

Parent tree results added by this flag do not currently count against SizedQuery::limit. A query with limit = 10 may return more than 10 results when this flag is active, because the limit only governs child-level results. This will be resolved in a future redesign that introduces per-level limits.

§Absence-proof verification

When verifying with verify_query_with_absence_proof or verify_subset_query_with_absence_proof, results are reconstructed from terminal_keys() which does not emit parent-tree entries. Parent tree elements will therefore not appear in the verified result set in those modes.

Implementations§

§

impl Query

pub fn insert_key(&mut self, key: Vec<u8>)

Adds an individual key to the query, so that its value (or its absence) in the tree will be included in the resulting proof.

If the key or a range including the key already exists in the query, this will have no effect. If the query already includes a range that has a non-inclusive bound equal to the key, the bound will be changed to be inclusive.

pub fn insert_keys(&mut self, keys: Vec<Vec<u8>>)

Adds multiple individual keys to the query, so that its value (or its absence) in the tree will be included in the resulting proof.

If the key or a range including the key already exists in the query, this will have no effect. If the query already includes a range that has a non-inclusive bound equal to the key, the bound will be changed to be inclusive.

pub fn insert_range(&mut self, range: Range<Vec<u8>>)

Adds a range to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_range_inclusive(&mut self, range: RangeInclusive<Vec<u8>>)

Adds an inclusive range to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be merged together.

pub fn insert_range_to_inclusive(&mut self, range: RangeToInclusive<Vec<u8>>)

Adds a range until a certain included value to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_range_from(&mut self, range: RangeFrom<Vec<u8>>)

Adds a range from a certain included value to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_range_to(&mut self, range: RangeTo<Vec<u8>>)

Adds a range until a certain non included value to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_range_after(&mut self, range: RangeFrom<Vec<u8>>)

Adds a range after the first value, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_range_after_to(&mut self, range: Range<Vec<u8>>)

Adds a range after the first value, until a certain non included value to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_range_after_to_inclusive( &mut self, range: RangeInclusive<Vec<u8>>, )

Adds a range after the first value, until a certain included value to the query, so that all the entries in the tree with keys in the range will be included in the resulting proof.

If a range including the range already exists in the query, this will have no effect. If the query already includes a range that overlaps with the range, the ranges will be joined together.

pub fn insert_all(&mut self)

Adds a range of all potential values to the query, so that the query will return all values

All other items in the query will be discarded as you are now getting back all elements.

pub fn insert_item(&mut self, item: QueryItem)

Adds the QueryItem to the query, first checking to see if it collides with any existing ranges or keys. All colliding items will be removed then merged together so that the query includes the minimum number of items (with no items covering any duplicate parts of keyspace) while still including every key or range that has been added to the query.

pub fn insert_items(&mut self, items: Vec<QueryItem>)

Performs an insert_item on each item in the vector.

§

impl Query

pub fn merge_default_subquery_branch( &mut self, other_default_subquery_branch: SubqueryBranch, )

Merges the subquery for the query with the current subquery. Subqueries causes every element that is returned by the query to be subqueried or subqueried to the subquery_path/subquery if a subquery is present. Merging involves creating conditional subqueries in the subqueries subqueries and paths.

pub fn merge_multiple(queries: Vec<Query>) -> Query

Merges multiple queries into a single query. Items are unioned and conditional subquery branches are merged where they intersect.

pub fn merge_with(&mut self, other: Query)

Merges another query into this one, combining items and conditional subquery branches.

pub fn merge_conditional_boxed_subquery( &mut self, query_item_merging_in: QueryItem, subquery_branch_merging_in: SubqueryBranch, )

Adds a conditional subquery. A conditional subquery replaces the default subquery and subquery_path if the item matches for the key. If multiple conditional subquery items match, then the first one that matches is used (in order that they were added).

pub fn merge_conditional_subquery_branches_with_new_at_query_item( conditional_subquery_branches: Option<IndexMap<QueryItem, SubqueryBranch>>, query_item_merging_in: QueryItem, subquery_branch_merging_in: SubqueryBranch, ) -> IndexMap<QueryItem, SubqueryBranch>

Adds a conditional subquery. A conditional subquery replaces the default subquery and subquery_path if the item matches for the key. If multiple conditional subquery items match, then the first one that matches is used (in order that they were added).

§

impl Query

pub fn new() -> Query

Creates a new query which contains no items.

pub fn new_range_full() -> Query

Creates a new query which contains all items.

pub fn new_single_key(key: Vec<u8>) -> Query

Creates a new query which contains only one key.

pub fn new_single_query_item(query_item: QueryItem) -> Query

Creates a new query which contains only one item.

pub fn new_with_direction(left_to_right: bool) -> Query

Creates a new query with a direction specified

pub fn new_single_query_item_with_direction( query_item: QueryItem, left_to_right: bool, ) -> Query

Creates a new query which contains only one item with the specified direction.

pub fn has_subquery_on_key(&self, key: &[u8], in_path: bool) -> bool

Returns true if the given key would trigger a subquery (either via the default subquery branch or a matching conditional branch).

pub fn has_subquery_or_subquery_path_on_key( &self, key: &[u8], in_path: bool, ) -> bool

Returns true if the given key would trigger a subquery or subquery path (either via the default branch or a matching conditional branch).

pub fn terminal_keys( &self, current_path: Vec<Vec<u8>>, max_results: usize, result: &mut Vec<(Vec<Vec<u8>>, Vec<u8>)>, ) -> Result<usize, Error>

Pushes terminal key paths and keys to result, no more than max_results. Returns the number of terminal keys added.

Terminal keys are the keys of a path query below which there are no more subqueries. In other words they’re the keys of the terminal queries of a path query.

pub fn len(&self) -> usize

Get number of query items

pub fn is_empty(&self) -> bool

Returns true if there are no query items.

pub fn iter(&self) -> impl Iterator<Item = &QueryItem>

Iterate through query items

pub fn rev_iter(&self) -> impl Iterator<Item = &QueryItem>

Iterate through query items in reverse

pub fn directional_iter( &self, left_to_right: bool, ) -> Box<dyn Iterator<Item = &QueryItem> + '_>

Iterate with direction specified

pub fn set_subquery_key(&mut self, key: Vec<u8>)

Sets the subquery_path for the query with one key. This causes every element that is returned by the query to be subqueried one level to the subquery_path.

pub fn set_subquery_path(&mut self, path: Vec<Vec<u8>>)

Sets the subquery_path for the query. This causes every element that is returned by the query to be subqueried to the subquery_path.

pub fn set_subquery(&mut self, subquery: Query)

Sets the subquery for the query. This causes every element that is returned by the query to be subqueried or subqueried to the subquery_path/subquery if a subquery is present.

pub fn add_conditional_subquery( &mut self, item: QueryItem, subquery_path: Option<Vec<Vec<u8>>>, subquery: Option<Query>, )

Adds a conditional subquery. A conditional subquery replaces the default subquery and subquery_path if the item matches for the key. If multiple conditional subquery items match, then the first one that matches is used (in order that they were added).

pub fn has_subquery(&self) -> bool

Check if there is a subquery

pub fn has_only_keys(&self) -> bool

Check if there are only keys

pub fn max_depth(&self) -> Option<u16>

Returns the depth of the subquery branch This depth is how many GroveDB layers down we could query at maximum

Trait Implementations§

§

impl<'de, Context> BorrowDecode<'de, Context> for Query

§

fn borrow_decode<D>(decoder: &mut D) -> Result<Query, DecodeError>
where D: BorrowDecoder<'de, Context = Context>,

Attempt to decode this type with the given BorrowDecode.
§

impl Clone for Query

§

fn clone(&self) -> Query

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

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

Performs copy-assignment from source. Read more
§

impl Debug for Query

§

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

Formats the value using the given formatter. Read more
§

impl<Context> Decode<Context> for Query

§

fn decode<D>(decoder: &mut D) -> Result<Query, DecodeError>
where D: Decoder<Context = Context>,

Attempt to decode this type with the given Decode.
§

impl Default for Query

§

fn default() -> Query

Returns the “default value” for a type. Read more
§

impl Display for Query

§

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

Formats the value using the given formatter. Read more
§

impl Encode for Query

§

fn encode<E>(&self, encoder: &mut E) -> Result<(), EncodeError>
where E: Encoder,

Encode a given type.
§

impl From<Query> for Vec<QueryItem>

§

fn from(q: Query) -> Vec<QueryItem>

Converts to this type from the input type.
§

impl<Q> From<Vec<Q>> for Query
where Q: Into<QueryItem>,

Available on crate feature blockchain only.
§

fn from(other: Vec<Q>) -> Query

Converts to this type from the input type.
§

impl IntoIterator for Query

§

type IntoIter = <Vec<QueryItem> as IntoIterator>::IntoIter

Which kind of iterator are we turning this into?
§

type Item = QueryItem

The type of the elements being iterated over.
§

fn into_iter(self) -> <Query as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl PartialEq for Query

§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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.
§

impl QueryProofVerify for Query

§

fn execute_proof( &self, bytes: &[u8], limit: Option<u16>, left_to_right: bool, proof_version: u16, ) -> CostContext<Result<([u8; 32], ProofVerificationResult), Error>>

Verifies the encoded proof with the given query

Every key in keys is checked to either have a key/value pair in the proof, or to have its absence in the tree proven.

Returns Err if the proof is invalid, or a list of proven values associated with keys. For example, if keys contains keys A and B, the returned list will contain 2 elements, the value of A and the value of B. Keys proven to be absent in the tree will have an entry of None, keys that have a proven value will have an entry of Some(value).

§

fn verify_proof( &self, bytes: &[u8], limit: Option<u16>, left_to_right: bool, expected_hash: [u8; 32], ) -> CostContext<Result<ProofVerificationResult, Error>>

Verifies the encoded proof with the given query and expected hash

§

impl StructuralPartialEq for Query

Auto Trait Implementations§

§

impl Freeze for Query

§

impl RefUnwindSafe for Query

§

impl Send for Query

§

impl Sync for Query

§

impl Unpin for Query

§

impl UnwindSafe for Query

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<I> BidiIterator for I

§

fn bidi(self, cond: bool) -> Bidi<Self::IntoIter>

Conditionally reverses the direction of iteration. 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, dest: *mut u8)

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

impl<'de, T> DefaultBorrowDecode<'de> for T
where T: BorrowDecode<'de, ()>,

Source§

fn borrow_decode<D>(decoder: &mut D) -> Result<Self, DecodeError>
where D: BorrowDecoder<'de, Context = ()>, Self: Sized,

Source§

impl<T> DefaultDecode for T
where T: Decode<()>,

Source§

fn decode<D>(decoder: &mut D) -> Result<Self, DecodeError>
where D: Decoder<Context = ()>, Self: Sized,

§

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

Source§

impl<T, U> IntoPlatformVersioned<U> for T

Source§

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

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
§

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

impl<T, U> TryIntoPlatformVersioned<U> for T

Source§

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

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

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