Struct penumbra_view::ViewService
source · pub struct ViewService { /* private fields */ }
Expand description
A service that synchronizes private chain state and responds to queries about it.
The ViewService
implements the Tonic-derived [ViewProtocol
] trait,
so it can be used as a gRPC server, or called directly. It spawns a task
internally that performs synchronization and scanning. The
ViewService
can be cloned; each clone will read from the same shared
state, but there will only be a single scanning task.
Implementations§
source§impl ViewService
impl ViewService
sourcepub async fn load_or_initialize(
storage_path: Option<impl AsRef<Utf8Path>>,
fvk: &FullViewingKey,
node: Url
) -> Result<Self>
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
.
sourcepub async fn new(storage: Storage, node: Url) -> Result<Self>
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 ViewService
s, 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.
sourcepub async fn latest_known_block_height(&self) -> Result<(u64, bool)>
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.
pub async fn status(&self) -> Result<StatusResponse>
Trait Implementations§
source§impl Clone for ViewService
impl Clone for ViewService
source§fn clone(&self) -> ViewService
fn clone(&self) -> ViewService
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl ViewProtocolService for ViewService
impl ViewProtocolService for ViewService
§type NotesStream = Pin<Box<dyn Stream<Item = Result<NotesResponse, Status>> + Send, Global>>
type NotesStream = Pin<Box<dyn Stream<Item = Result<NotesResponse, Status>> + Send, Global>>
§type NotesForVotingStream = Pin<Box<dyn Stream<Item = Result<NotesForVotingResponse, Status>> + Send, Global>>
type NotesForVotingStream = Pin<Box<dyn Stream<Item = Result<NotesForVotingResponse, Status>> + Send, Global>>
§type AssetsStream = Pin<Box<dyn Stream<Item = Result<AssetsResponse, Status>> + Send, Global>>
type AssetsStream = Pin<Box<dyn Stream<Item = Result<AssetsResponse, Status>> + Send, Global>>
§type StatusStreamStream = Pin<Box<dyn Stream<Item = Result<StatusStreamResponse, Status>> + Send, Global>>
type StatusStreamStream = Pin<Box<dyn Stream<Item = Result<StatusStreamResponse, Status>> + Send, Global>>
§type TransactionInfoStream = Pin<Box<dyn Stream<Item = Result<TransactionInfoResponse, Status>> + Send, Global>>
type TransactionInfoStream = Pin<Box<dyn Stream<Item = Result<TransactionInfoResponse, Status>> + Send, Global>>
§type BalancesStream = Pin<Box<dyn Stream<Item = Result<BalancesResponse, Status>> + Send, Global>>
type BalancesStream = Pin<Box<dyn Stream<Item = Result<BalancesResponse, Status>> + Send, Global>>
§type OwnedPositionIdsStream = Pin<Box<dyn Stream<Item = Result<OwnedPositionIdsResponse, Status>> + Send, Global>>
type OwnedPositionIdsStream = Pin<Box<dyn Stream<Item = Result<OwnedPositionIdsResponse, Status>> + Send, Global>>
§type UnclaimedSwapsStream = Pin<Box<dyn Stream<Item = Result<UnclaimedSwapsResponse, Status>> + Send, Global>>
type UnclaimedSwapsStream = Pin<Box<dyn Stream<Item = Result<UnclaimedSwapsResponse, Status>> + Send, Global>>
source§fn broadcast_transaction<'life0, 'async_trait>(
&'life0 self,
request: Request<BroadcastTransactionRequest>
) -> Pin<Box<dyn Future<Output = Result<Response<BroadcastTransactionResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn broadcast_transaction<'life0, 'async_trait>( &'life0 self, request: Request<BroadcastTransactionRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<BroadcastTransactionResponse>, Status>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
source§fn status<'life0, 'async_trait>(
&'life0 self,
request: Request<StatusRequest>
) -> Pin<Box<dyn Future<Output = Result<Response<StatusResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn status<'life0, 'async_trait>( &'life0 self, request: Request<StatusRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<StatusResponse>, Status>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
source§fn status_stream<'life0, 'async_trait>(
&'life0 self,
request: Request<StatusStreamRequest>
) -> Pin<Box<dyn Future<Output = Result<Response<Self::StatusStreamStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn status_stream<'life0, 'async_trait>( &'life0 self, request: Request<StatusStreamRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::StatusStreamStream>, Status>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
StatusStreamResponse
s.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,
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,
NotesResponse
s.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,
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,
NotesForVotingResponse
s.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,
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,
AssetsResponse
s.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,
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,
TransactionInfoResponse
s.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,
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,
fn witness_and_build<'life0, 'async_trait>( &'life0 self, request: Request<WitnessAndBuildRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<WitnessAndBuildResponse>, Status>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
source§fn chain_parameters<'life0, 'async_trait>(
&'life0 self,
_request: Request<ChainParametersRequest>
) -> Pin<Box<dyn Future<Output = Result<Response<ChainParametersResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chain_parameters<'life0, 'async_trait>( &'life0 self, _request: Request<ChainParametersRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<ChainParametersResponse>, Status>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
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,
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,
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,
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,
source§fn unclaimed_swaps<'life0, 'async_trait>(
&'life0 self,
request: Request<UnclaimedSwapsRequest>
) -> Pin<Box<dyn Future<Output = Result<Response<Self::UnclaimedSwapsStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn unclaimed_swaps<'life0, 'async_trait>( &'life0 self, request: Request<UnclaimedSwapsRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::UnclaimedSwapsStream>, Status>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Auto Trait Implementations§
impl !RefUnwindSafe for ViewService
impl Send for ViewService
impl Sync for ViewService
impl Unpin for ViewService
impl !UnwindSafe for ViewService
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
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) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.