Skip to main content

Sp

Struct Sp 

Source
pub struct Sp<T, D = InMemoryDB>
where T: 'static + ?Sized, D: DB,
{ pub child_repr: ArenaKey<<D as DB>::Hasher>, pub arena: Arena<D>, pub root: ArenaHash<<D as DB>::Hasher>, /* private fields */ }
Expand description

A typed pointer to a value stored in the Arena.

An Sp<T> can be lazily initialized, in which case its internal T value won’t be loaded until access is attempted.

Fields§

§child_repr: ArenaKey<<D as DB>::Hasher>

This Sp represented as a child node (for easy access)

§arena: Arena<D>

The arena this Sp points into

§root: ArenaHash<<D as DB>::Hasher>

The persistent hash of data.

Implementations§

Source§

impl<T, D> Sp<T, D>
where T: Storable<D>, D: DB,

Source

pub fn new(value: T) -> Sp<T, D>

Allocates a new Sp against the default storage

Source§

impl<T, D> Sp<T, D>
where T: 'static + ?Sized, D: DB,

Constructors for Sp that take care of Arena ref counting.

Source

pub fn into_tracked(&self) -> Sp<T, D>

Converts this Sp into one that is tracked directly, making it possible to lookup by its hash.

This forces the Sp to be considered a reference when used as a child of other Sps, and places it into internal caches, and eventually the database if persisted or a parent is persisted.

Source§

impl<D> Sp<dyn Any + Send + Sync, D>
where D: DB,

Source

pub fn downcast<T>(&self) -> Option<Sp<T, D>>
where T: Any + Send + Sync,

Downcasts this dynamically typed pointer to a concrete type, if possible.

Source

pub fn force_downcast<T>(&self) -> Sp<T, D>
where T: Any + Send + Sync,

Downcasts this dynamically typed pointer to a concrete type, but pushes through the cast regardless of the underlying type.

This will effectively unload the Sp, and construct a new lazy Sp with the same backing data. There is no way of knowing if this will succeed, as the lazy loading will defer failure to a context where a failure panics.

Source§

impl<T, D> Sp<T, D>
where T: Any + Send + Sync, D: DB,

Source

pub fn upcast(&self) -> Sp<dyn Any + Send + Sync, D>

Casts this pointer into a dynamically typed Any pointer.

Source§

impl<T, D> Sp<T, D>
where D: DB, T: ?Sized,

Source

pub fn is_lazy(&self) -> bool

Return true iff this Sp is lazy/unforced, i.e. its data has not yet been loaded.

If the Sp is lazy, it can be forced by dereferencing it.

Source

pub fn hash(&self) -> ArenaHash<<D as DB>::Hasher>

Return hash of self and all children, cached from &lt;T as Storable&gt;::hash().

This is the root key of self, as a content-addressed Merkle node.

Source

pub fn as_typed_key(&self) -> TypedArenaKey<T, <D as DB>::Hasher>

Returns the TypedArenaKey representation of this Sp, useful as a reference to persist.

Source

pub fn as_child(&self) -> ArenaKey<<D as DB>::Hasher>

Returns the ArenaKey representation of this Sp, being either a ref to [Sp::hash], or the direct encoding for small children.

Source§

impl<T, D> Sp<T, D>
where T: Storable<D>, D: DB,

Source

pub fn persist(&mut self)

Notify the storage back-end to increment the persist count on this object.

See [StorageBackend::persist].

Note: Due to a technicality in past behaviour, this converts the Sp into a Ref internally. In particular, this means that Sp::as_typed_key will provide different results before and after persisting. A change to this would be a major breaking change, and is therefore deferred.

Source

pub fn unpersist(&self)

Notify the storage back-end to decrement the persist count on this object.

See [StorageBackend::unpersist].

Source

pub fn into_inner(this: Sp<T, D>) -> Option<T>

Returns the content of this Sp, if this Sp is initialized, and is the only reference to its data. When the Sp is initialized, this behaves like Arc::into_inner.

Source§

impl<T, D> Sp<T, D>
where T: 'static + ?Sized, D: DB,

Source

pub fn unload(&mut self)

Replace the self.data with an uninitialized lazy value.

Note: if there are multiple outstanding refs to the data in this Sp, e.g. because a clone of this Sp is owned by some larger data structure, then the underlying data won’t actually be dropped until all such Sps go out of scope or have unload called on them.

Warning: If this is the last reference to the Sp, and the Sp is not persisted, dereferencing it after unload may fail, because nothing is keeping the data alive.

Source§

impl<T, D> Sp<T, D>
where T: Storable<D>, D: DB,

Source

pub fn serialize_to_node_list(&self) -> TopoSortedNodes

Topologically sort a sub-graph of storage into a sequence of nodes.

This will force and load all nodes in this sub-graph.

Source

pub fn serialize_to_node_list_bounded( &self, raw_size_limit: u64, ) -> Option<TopoSortedNodes>

Topologically sort a sub-graph of storage into a sequence of nodes.

This will force and load all nodes in this sub-graph.

The size limit stops serialization if a specified serialized size limit is overstepped.

Only returns None if a size limit is provided and overstepped

Trait Implementations§

Source§

impl<T, D> Clone for Sp<T, D>
where D: DB, T: ?Sized,

Source§

fn clone(&self) -> Sp<T, D>

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

impl<T, D> Debug for Sp<T, D>
where T: Debug, D: DB,

Source§

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

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

impl<T, D> Deref for Sp<T, D>
where T: Storable<D>, D: DB,

Source§

fn deref(&self) -> &<Sp<T, D> as Deref>::Target

Access the inner data, forcing initialization if necessary.

Source§

type Target = T

The resulting type after dereferencing.
Source§

impl<T, D> Deserializable for Sp<T, D>
where T: Storable<D>, D: DB,

Source§

fn deserialize( reader: &mut impl Read, recursive_depth: u32, ) -> Result<Sp<T, D>, Error>

Source§

const LIMIT_RECURSION: bool = true

Source§

fn check_rec(depth: &mut u32) -> Result<(), Error>

Source§

impl<'a, T, D> Deserialize<'a> for Sp<T, D>
where T: Deserialize<'a> + Storable<D>, D: DB,

Source§

fn deserialize<D2>( deserializer: D2, ) -> Result<Sp<T, D>, <D2 as Deserializer<'a>>::Error>
where D2: Deserializer<'a>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<T, D> Display for Sp<T, D>
where T: Display, D: DB,

Source§

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

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

impl<T, D> Drop for Sp<T, D>
where T: 'static + ?Sized, D: DB,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T, D> Hash for Sp<T, D>
where D: DB,

Source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T, D> Ord for Sp<T, D>
where T: Ord + Storable<D>, D: DB,

See warning on Sp::eq above.

Source§

fn cmp(&self, other: &Sp<T, D>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T, D> PartialEq for Sp<T, D>
where D: DB,

Source§

fn eq(&self, other: &Sp<T, D>) -> bool

An O(1) implementation of equality for Sp<T>.

§Warning

It’s possible this implementation is inconsistent with the implementation for the underlying type T, if any, because:

  • our equality is reflexive, but equality on T may not be, i.e. T might not implement Eq.

  • our equality is maximally fine grained, but equality on the underlying type T could equate two values with different hashes.

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

impl<T, D> PartialOrd for Sp<T, D>
where T: PartialOrd + Storable<D>, D: DB,

See warning on Sp::eq above.

Source§

fn partial_cmp(&self, other: &Sp<T, D>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T, D> Serializable for Sp<T, D>
where T: Storable<D>, D: DB,

Source§

fn serialize(&self, writer: &mut impl Write) -> Result<(), Error>

Source§

fn serialized_size(&self) -> usize

Source§

impl<T, D> Serialize for Sp<T, D>
where T: Serialize + Storable<D>, D: DB,

Source§

fn serialize<S>( &self, serializer: S, ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<D, T> Storable<D> for Sp<T, D>
where D: DB, T: Storable<D>,

Source§

fn children(&self) -> Vec<ArenaKey<<D as DB>::Hasher>>

Provides an iterator over hashes of child Sps, if any. These hashes will be passed back into from_binary_repr when deserializing.
Source§

fn from_binary_repr<R>( reader: &mut R, child_hashes: &mut impl Iterator<Item = ArenaKey<<D as DB>::Hasher>>, loader: &impl Loader<D>, ) -> Result<Sp<T, D>, Error>
where R: Read,

Instantiates self, given hashes of any children, and loader that loads children given their hash.
Source§

fn to_binary_repr<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write,

Serializes self, omitting any children.
Source§

fn check_invariant(&self) -> Result<(), Error>

An invariant to check on deserialization. Should be invoked from within from_binary_repr.
Source§

fn as_child(&self) -> ArenaKey<<D as DB>::Hasher>

Represents self as a ArenaKey
Source§

impl<D> Storable<D> for Sp<dyn Any + Send + Sync, D>
where D: DB,

Source§

fn children(&self) -> Vec<ArenaKey<<D as DB>::Hasher>>

Provides an iterator over hashes of child Sps, if any. These hashes will be passed back into from_binary_repr when deserializing.
Source§

fn from_binary_repr<R>( reader: &mut R, child_nodes: &mut impl Iterator<Item = ArenaKey<<D as DB>::Hasher>>, loader: &impl Loader<D>, ) -> Result<Sp<dyn Any + Send + Sync, D>, Error>
where R: Read, Sp<dyn Any + Send + Sync, D>: Sized,

Instantiates self, given hashes of any children, and loader that loads children given their hash.
Source§

fn to_binary_repr<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write, Sp<dyn Any + Send + Sync, D>: Sized,

Serializes self, omitting any children.
Source§

fn check_invariant(&self) -> Result<(), Error>

An invariant to check on deserialization. Should be invoked from within from_binary_repr.
Source§

fn as_child(&self) -> ArenaKey<<D as DB>::Hasher>

Represents self as a ArenaKey
Source§

impl<T, D> Tagged for Sp<T, D>
where T: Tagged, D: DB,

Source§

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

Retrieves the tag of Self. Returns a [Cow] as type arguments require allocation, but no allocation is preferred.
Source§

fn tag_unique_factor() -> String

A decomposition of this tag into primitive types (any type whose representation is not defined through other types), tuples (via (a,b)), and sum types (via [a,b]). Read more
Source§

impl<T, D> Eq for Sp<T, D>
where D: DB,

See warning on Sp::eq above.

Auto Trait Implementations§

§

impl<T, D = InMemoryDB> !Freeze for Sp<T, D>

§

impl<T, D = InMemoryDB> !RefUnwindSafe for Sp<T, D>

§

impl<T, D> Send for Sp<T, D>
where T: Sync + Send + ?Sized,

§

impl<T, D> Sync for Sp<T, D>
where T: Sync + Send + ?Sized,

§

impl<T, D> Unpin for Sp<T, D>

§

impl<T, D> UnsafeUnpin for Sp<T, D>

§

impl<T, D = InMemoryDB> !UnwindSafe for Sp<T, D>

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<T> Conv for T

Source§

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

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

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

impl<T> Fake for T

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

Source§

impl<T> FmtForward for T

Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

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

Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Source§

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

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

impl<T> Tap for T

Source§

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

Immutable access to a value. Read more
Source§

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

Mutable access to a value. Read more
Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T> TryConv for T

Source§

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

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

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

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,