Struct penumbra_view::ViewServer

source ·
pub struct ViewServer { /* private fields */ }
Expand description

A service that synchronizes private chain state and responds to queries about it.

The ViewServer implements the Tonic-derived ViewService trait, so it can be used as a gRPC server, or called directly. It spawns a task internally that performs synchronization and scanning. The ViewServer can be cloned; each clone will read from the same shared state, but there will only be a single scanning task.

Implementations§

source§

impl ViewServer

source

pub async fn load_or_initialize( storage_path: Option<impl AsRef<Utf8Path>>, fvk: &FullViewingKey, node: Url ) -> Result<Self>

Convenience method that calls Storage::load_or_initialize and then Self::new.

source

pub async fn new(storage: Storage, node: Url) -> Result<Self>

Constructs a new ViewService, spawning a sync task internally.

The sync task uses the provided client to sync with the chain.

To create multiple ViewServices, clone the ViewService returned by this method, rather than calling it multiple times. That way, each clone will be backed by the same scanning task, rather than each spawning its own.

source

pub async fn latest_known_block_height(&self) -> Result<(u64, bool)>

Return the latest block height known by the fullnode or its peers, as well as whether the fullnode is caught up with that height.

source

pub async fn status(&self) -> Result<StatusResponse>

Trait Implementations§

source§

impl Clone for ViewServer

source§

fn clone(&self) -> ViewServer

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 ViewService for ViewServer

§

type NotesStream = Pin<Box<dyn Stream<Item = Result<NotesResponse, Status>> + Send>>

Server streaming response type for the Notes method.
§

type NotesForVotingStream = Pin<Box<dyn Stream<Item = Result<NotesForVotingResponse, Status>> + Send>>

Server streaming response type for the NotesForVoting method.
§

type AssetsStream = Pin<Box<dyn Stream<Item = Result<AssetsResponse, Status>> + Send>>

Server streaming response type for the Assets method.
§

type StatusStreamStream = Pin<Box<dyn Stream<Item = Result<StatusStreamResponse, Status>> + Send>>

Server streaming response type for the StatusStream method.
§

type TransactionInfoStream = Pin<Box<dyn Stream<Item = Result<TransactionInfoResponse, Status>> + Send>>

Server streaming response type for the TransactionInfo method.
§

type BalancesStream = Pin<Box<dyn Stream<Item = Result<BalancesResponse, Status>> + Send>>

Server streaming response type for the Balances method.
§

type OwnedPositionIdsStream = Pin<Box<dyn Stream<Item = Result<OwnedPositionIdsResponse, Status>> + Send>>

Server streaming response type for the OwnedPositionIds method.
§

type UnclaimedSwapsStream = Pin<Box<dyn Stream<Item = Result<UnclaimedSwapsResponse, Status>> + Send>>

Server streaming response type for the UnclaimedSwaps method.
§

type BroadcastTransactionStream = Pin<Box<dyn Stream<Item = Result<BroadcastTransactionResponse, Status>> + Send>>

Server streaming response type for the BroadcastTransaction method.
§

type WitnessAndBuildStream = Pin<Box<dyn Stream<Item = Result<WitnessAndBuildResponse, Status>> + Send>>

Server streaming response type for the WitnessAndBuild method.
§

type AuthorizeAndBuildStream = Pin<Box<dyn Stream<Item = Result<AuthorizeAndBuildResponse, Status>> + Send>>

Server streaming response type for the AuthorizeAndBuild method.
§

type DelegationsByAddressIndexStream = Pin<Box<dyn Stream<Item = Result<DelegationsByAddressIndexResponse, Status>> + Send>>

Server streaming response type for the DelegationsByAddressIndex method.
§

type UnbondingTokensByAddressIndexStream = Pin<Box<dyn Stream<Item = Result<UnbondingTokensByAddressIndexResponse, Status>> + Send>>

Server streaming response type for the UnbondingTokensByAddressIndex method.
§

type AuctionsStream = Pin<Box<dyn Stream<Item = Result<AuctionsResponse, Status>> + Send>>

Server streaming response type for the Auctions method.
source§

fn auctions<'life0, 'async_trait>( &'life0 self, request: Request<AuctionsRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::AuctionsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Gets the auctions controlled by the user’s wallet.
source§

fn broadcast_transaction<'life0, 'async_trait>( &'life0 self, request: Request<BroadcastTransactionRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::BroadcastTransactionStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Broadcast a transaction to the network, optionally waiting for full confirmation. Read more
source§

fn transaction_planner<'life0, 'async_trait>( &'life0 self, request: Request<TransactionPlannerRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<TransactionPlannerResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Translates a high-level intent (“send X funds to Y address”) into a complete transaction plan.
source§

fn address_by_index<'life0, 'async_trait>( &'life0 self, request: Request<AddressByIndexRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<AddressByIndexResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for an address given an address index
source§

fn index_by_address<'life0, 'async_trait>( &'life0 self, request: Request<IndexByAddressRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<IndexByAddressResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for an address given an address index
source§

fn ephemeral_address<'life0, 'async_trait>( &'life0 self, request: Request<EphemeralAddressRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<EphemeralAddressResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for an ephemeral address
source§

fn transaction_info_by_hash<'life0, 'async_trait>( &'life0 self, request: Request<TransactionInfoByHashRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<TransactionInfoByHashResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for a given transaction by its hash.
source§

fn swap_by_commitment<'life0, 'async_trait>( &'life0 self, request: Request<SwapByCommitmentRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<SwapByCommitmentResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for a swap by its swap commitment, optionally waiting until the swap is detected.
source§

fn balances<'life0, 'async_trait>( &'life0 self, request: Request<BalancesRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::BalancesStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for balance of a given address. Returns a stream of BalancesResponses.
source§

fn note_by_commitment<'life0, 'async_trait>( &'life0 self, request: Request<NoteByCommitmentRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<NoteByCommitmentResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for a note by its note commitment, optionally waiting until the note is detected.
source§

fn nullifier_status<'life0, 'async_trait>( &'life0 self, request: Request<NullifierStatusRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<NullifierStatusResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for whether a nullifier has been spent, optionally waiting until it is spent.
source§

fn status<'life0, 'async_trait>( &'life0 self, __arg1: Request<StatusRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<StatusResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get current status of chain sync
source§

fn status_stream<'life0, 'async_trait>( &'life0 self, __arg1: Request<StatusStreamRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::StatusStreamStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stream sync status updates until the view service has caught up with the chain. Returns a stream of StatusStreamResponses.
source§

fn notes<'life0, 'async_trait>( &'life0 self, request: Request<NotesRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::NotesStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Queries for notes that have been accepted by the chain. Returns a stream of NotesResponses.
source§

fn notes_for_voting<'life0, 'async_trait>( &'life0 self, request: Request<NotesForVotingRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::NotesForVotingStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns a stream of NotesForVotingResponses.
source§

fn assets<'life0, 'async_trait>( &'life0 self, request: Request<AssetsRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::AssetsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Queries for metadata about known assets. Returns a stream of AssetsResponses.
source§

fn transaction_info<'life0, 'async_trait>( &'life0 self, request: Request<TransactionInfoRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::TransactionInfoStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for the full transactions in the given range of blocks. Returns a stream of TransactionInfoResponses.
source§

fn witness<'life0, 'async_trait>( &'life0 self, request: Request<WitnessRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<WitnessResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns authentication data for the given transaction plan. Read more
source§

fn witness_and_build<'life0, 'async_trait>( &'life0 self, request: Request<WitnessAndBuildRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::WitnessAndBuildStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Like Witness, but immediately uses the witness data to build (prove) the transaction. Read more
source§

fn app_parameters<'life0, 'async_trait>( &'life0 self, _request: Request<AppParametersRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<AppParametersResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for the current app parameters.
source§

fn gas_prices<'life0, 'async_trait>( &'life0 self, _request: Request<GasPricesRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<GasPricesResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for the current gas prices.
source§

fn fmd_parameters<'life0, 'async_trait>( &'life0 self, _request: Request<FmdParametersRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<FmdParametersResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for the current FMD parameters.
source§

fn owned_position_ids<'life0, 'async_trait>( &'life0 self, request: Request<OwnedPositionIdsRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::OwnedPositionIdsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for owned position IDs for the given trading pair and in the given position state.
source§

fn authorize_and_build<'life0, 'async_trait>( &'life0 self, _request: Request<AuthorizeAndBuildRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::AuthorizeAndBuildStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Authorize a transaction plan and build the transaction. Read more
source§

fn unclaimed_swaps<'life0, 'async_trait>( &'life0 self, __arg1: Request<UnclaimedSwapsRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::UnclaimedSwapsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for all unclaimed swaps.
source§

fn wallet_id<'life0, 'async_trait>( &'life0 self, __arg1: Request<WalletIdRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<WalletIdResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for wallet id
source§

fn asset_metadata_by_id<'life0, 'async_trait>( &'life0 self, request: Request<AssetMetadataByIdRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<AssetMetadataByIdResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query for metadata about a specific asset, by asset ID. Read more
source§

fn delegations_by_address_index<'life0, 'async_trait>( &'life0 self, _request: Request<DelegationsByAddressIndexRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::DelegationsByAddressIndexStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get delegation tokens for a given address index. Each delegation token will be represented by a ValueView with the given address index’s balance of that token. Each ValueView’s extended_metadata field will contain the ValidatorInfo of the delegated validator.
source§

fn unbonding_tokens_by_address_index<'life0, 'async_trait>( &'life0 self, _request: Request<UnbondingTokensByAddressIndexRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::UnbondingTokensByAddressIndexStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get unbonding tokens for the given address index, optionally filtered by whether the tokens are currently claimable.

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<T> Conv for T

§

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

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

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

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

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

§

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,

§

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

§

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

§

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