pub struct Hopr<Chain, Db, Graph, Net>where
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,{ /* private fields */ }Expand description
HOPR main object providing the entire HOPR node functionality
Instantiating this object creates all processes and objects necessary for
running the HOPR node. Once created, the node can be started using the
run() method.
Externally offered API should be enough to perform all necessary tasks with the HOPR node manually, but it is advised to create such a configuration that manual interaction is unnecessary.
As such, the hopr_lib serves mainly as an integration point into Rust programs.
Implementations§
Source§impl<Chain, Db, Graph, Net> Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
impl<Chain, Db, Graph, Net> Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
pub async fn new( identity: (&ChainKeypair, &OffchainKeypair), hopr_chain_api: Chain, hopr_node_db: Db, graph: Graph, cfg: HoprLibConfig, ) -> Result<Self>
pub fn config(&self) -> &HoprLibConfig
Sourcepub async fn network_peer_packet_stats(
&self,
peer: &PeerId,
) -> Result<Option<PeerPacketStatsSnapshot>>
pub async fn network_peer_packet_stats( &self, peer: &PeerId, ) -> Result<Option<PeerPacketStatsSnapshot>>
Get packet stats for a specific peer.
Sourcepub async fn network_all_packet_stats(
&self,
) -> Result<Vec<(PeerId, PeerPacketStatsSnapshot)>>
pub async fn network_all_packet_stats( &self, ) -> Result<Vec<(PeerId, PeerPacketStatsSnapshot)>>
Get packet stats for all connected peers.
pub async fn run<Ct, NetBuilder, T: HoprSessionServer + Clone + Send + 'static>(
&self,
cover_traffic: Ct,
network_builder: NetBuilder,
serve_handler: T,
) -> Result<HoprTransportIO>where
Ct: ProbingTrafficGeneration + CoverTrafficGeneration + Send + Sync + 'static,
NetBuilder: NetworkBuilder<Network = Net> + Send + Sync + 'static,
Sourcepub fn shutdown(&self) -> Result<(), HoprLibError>
pub fn shutdown(&self) -> Result<(), HoprLibError>
Used to practically shut down all node’s processes without dropping the instance.
This means that the instance can be used to retrieve some information, but all
active operations will stop and new will be impossible to perform.
Such operations will return HoprStatusError::NotThereYet.
This is the final state and cannot be reversed by calling [HoprLib::run] again.
Sourcepub async fn connect_to(
&self,
destination: Address,
target: SessionTarget,
cfg: SessionClientConfig,
) -> Result<HoprSession>
pub async fn connect_to( &self, destination: Address, target: SessionTarget, cfg: SessionClientConfig, ) -> Result<HoprSession>
Create a client session connection returning a session object that implements
[futures::io::AsyncRead] and [futures::io::AsyncWrite] and can bu used as a read/write binary session.
Sourcepub async fn keep_alive_session(&self, id: &SessionId) -> Result<()>
pub async fn keep_alive_session(&self, id: &SessionId) -> Result<()>
Sends keep-alive to the given [HoprSessionId], making sure the session is not
closed due to inactivity.
pub async fn get_session_surb_balancer_config( &self, id: &SessionId, ) -> Result<Option<SurbBalancerConfig>>
pub async fn get_session_stats( &self, id: &SessionId, ) -> Result<SessionStatsSnapshot>
pub async fn update_session_surb_balancer_config( &self, id: &SessionId, cfg: SurbBalancerConfig, ) -> Result<()>
Source§impl<Chain, Db, Graph, Net> Hopr<Chain, Db, Graph, Net>where
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
impl<Chain, Db, Graph, Net> Hopr<Chain, Db, Graph, Net>where
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
Sourcepub fn collect_hopr_metrics() -> Result<String>
pub fn collect_hopr_metrics() -> Result<String>
Prometheus formatted metrics collected by the hopr-lib components.
Source§impl<Chain, Db, Graph, Net> Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
impl<Chain, Db, Graph, Net> Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
pub fn me_onchain(&self) -> Address
pub fn get_safe_config(&self) -> SafeModuleConfig
pub async fn get_balance<C: Currency + Send>( &self, ) -> Result<Balance<C>, HoprLibError>
pub async fn get_safe_balance<C: Currency + Send>( &self, ) -> Result<Balance<C>, HoprLibError>
pub async fn safe_allowance(&self) -> Result<HoprBalance, HoprLibError>
pub async fn chain_info(&self) -> Result<ChainInfo, HoprLibError>
pub async fn get_ticket_price(&self) -> Result<HoprBalance, HoprLibError>
pub async fn get_minimum_incoming_ticket_win_probability( &self, ) -> Result<WinningProbability, HoprLibError>
pub async fn get_channel_closure_notice_period( &self, ) -> Result<Duration, HoprLibError>
pub async fn accounts_announced_on_chain( &self, ) -> Result<Vec<AccountEntry>, HoprLibError>
pub async fn peerid_to_chain_key( &self, peer_id: &PeerId, ) -> Result<Option<Address>, HoprLibError>
pub async fn chain_key_to_peerid( &self, address: &Address, ) -> Result<Option<PeerId>, HoprLibError>
pub async fn channel_from_hash( &self, channel_id: &Hash, ) -> Result<Option<ChannelEntry>, HoprLibError>
pub async fn channel( &self, src: &Address, dest: &Address, ) -> Result<Option<ChannelEntry>, HoprLibError>
pub async fn channels_from( &self, src: &Address, ) -> Result<Vec<ChannelEntry>, HoprLibError>
pub async fn channels_to( &self, dest: &Address, ) -> Result<Vec<ChannelEntry>, HoprLibError>
pub async fn all_channels(&self) -> Result<Vec<ChannelEntry>, HoprLibError>
pub async fn open_channel( &self, destination: &Address, amount: HoprBalance, ) -> Result<OpenChannelResult, HoprLibError>
pub async fn fund_channel( &self, channel_id: &ChannelId, amount: HoprBalance, ) -> Result<Hash, HoprLibError>
pub async fn close_channel_by_id( &self, channel_id: &ChannelId, ) -> Result<CloseChannelResult, HoprLibError>
pub async fn tickets_in_channel( &self, channel_id: &ChannelId, ) -> Result<Option<Vec<RedeemableTicket>>, HoprLibError>
pub async fn all_tickets(&self) -> Result<Vec<VerifiedTicket>, HoprLibError>
pub async fn ticket_statistics( &self, ) -> Result<ChannelTicketStatistics, HoprLibError>
pub async fn reset_ticket_statistics(&self) -> Result<(), HoprLibError>
pub async fn redeem_all_tickets<B: Into<HoprBalance> + Send>( &self, min_value: B, ) -> Result<(), HoprLibError>
pub async fn redeem_tickets_with_counterparty<B: Into<HoprBalance> + Send>( &self, counterparty: &Address, min_value: B, ) -> Result<(), HoprLibError>
pub async fn redeem_tickets_in_channel<B: Into<HoprBalance> + Send>( &self, channel_id: &Hash, min_value: B, ) -> Result<(), HoprLibError>
pub async fn redeem_ticket( &self, ack_ticket: AcknowledgedTicket, ) -> Result<(), HoprLibError>
pub fn subscribe_winning_tickets( &self, ) -> impl Stream<Item = VerifiedTicket> + Send + 'static
pub fn redemption_requests(&self) -> Result<SinkMap, HoprLibError>
pub async fn withdraw_tokens( &self, recipient: Address, amount: HoprBalance, ) -> Result<Hash, HoprLibError>
pub async fn withdraw_native( &self, recipient: Address, amount: XDaiBalance, ) -> Result<Hash, HoprLibError>
Trait Implementations§
Source§impl<Chain, Db, Graph, Net> HoprNodeNetworkOperations for Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
impl<Chain, Db, Graph, Net> HoprNodeNetworkOperations for Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
Source§type Error = HoprLibError
type Error = HoprLibError
Source§type TransportObservable = <Graph as NetworkGraphView>::Observed
type TransportObservable = <Graph as NetworkGraphView>::Observed
Source§fn me_peer_id(&self) -> PeerId
fn me_peer_id(&self) -> PeerId
Source§fn get_public_nodes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<(PeerId, Address, Vec<Multiaddr>)>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_public_nodes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<(PeerId, Address, Vec<Multiaddr>)>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn network_health<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Health> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn network_health<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Health> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn network_connected_peers<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<PeerId>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn network_connected_peers<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<PeerId>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn network_peer_info(&self, peer: &PeerId) -> Option<Self::TransportObservable>
fn network_peer_info(&self, peer: &PeerId) -> Option<Self::TransportObservable>
Source§fn all_network_peers<'life0, 'async_trait>(
&'life0 self,
minimum_score: f64,
) -> Pin<Box<dyn Future<Output = Result<Vec<(Option<Address>, PeerId, Self::TransportObservable)>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn all_network_peers<'life0, 'async_trait>(
&'life0 self,
minimum_score: f64,
) -> Pin<Box<dyn Future<Output = Result<Vec<(Option<Address>, PeerId, Self::TransportObservable)>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn local_multiaddresses(&self) -> Vec<Multiaddr>
fn local_multiaddresses(&self) -> Vec<Multiaddr>
Source§fn listening_multiaddresses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Vec<Multiaddr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn listening_multiaddresses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Vec<Multiaddr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn network_observed_multiaddresses<'life0, 'life1, 'async_trait>(
&'life0 self,
peer: &'life1 PeerId,
) -> Pin<Box<dyn Future<Output = Vec<Multiaddr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn network_observed_multiaddresses<'life0, 'life1, 'async_trait>(
&'life0 self,
peer: &'life1 PeerId,
) -> Pin<Box<dyn Future<Output = Vec<Multiaddr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn multiaddresses_announced_on_chain<'life0, 'life1, 'async_trait>(
&'life0 self,
peer: &'life1 PeerId,
) -> Pin<Box<dyn Future<Output = Result<Vec<Multiaddr>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn multiaddresses_announced_on_chain<'life0, 'life1, 'async_trait>(
&'life0 self,
peer: &'life1 PeerId,
) -> Pin<Box<dyn Future<Output = Result<Vec<Multiaddr>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn ping<'life0, 'life1, 'async_trait>(
&'life0 self,
peer: &'life1 PeerId,
) -> Pin<Box<dyn Future<Output = Result<(Duration, Self::TransportObservable), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn ping<'life0, 'life1, 'async_trait>(
&'life0 self,
peer: &'life1 PeerId,
) -> Pin<Box<dyn Future<Output = Result<(Duration, Self::TransportObservable), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<Chain, Db, Graph, Net> HoprNodeOperations for Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
impl<Chain, Db, Graph, Net> HoprNodeOperations for Hopr<Chain, Db, Graph, Net>where
Chain: HoprChainApi + Clone + Send + Sync + 'static,
Db: HoprNodeDbApi + Clone + Send + Sync + 'static,
Graph: NetworkGraphView<NodeId = OffchainPublicKey> + NetworkGraphUpdate + Clone + Send + Sync + 'static,
Net: NetworkView + NetworkStreamControl + Send + Sync + Clone + 'static,
Auto Trait Implementations§
impl<Chain, Db, Graph, Net> !Freeze for Hopr<Chain, Db, Graph, Net>
impl<Chain, Db, Graph, Net> !RefUnwindSafe for Hopr<Chain, Db, Graph, Net>
impl<Chain, Db, Graph, Net> Send for Hopr<Chain, Db, Graph, Net>
impl<Chain, Db, Graph, Net> Sync for Hopr<Chain, Db, Graph, Net>
impl<Chain, Db, Graph, Net> Unpin for Hopr<Chain, Db, Graph, Net>
impl<Chain, Db, Graph, Net> !UnwindSafe for Hopr<Chain, Db, Graph, Net>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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> 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) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
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)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.