pub struct Sqlint { /* private fields */ }Expand description
The main entry point and an abstraction over a database connection.
Implementations§
Source§impl Sqlint
impl Sqlint
Sourcepub async fn new(url_str: &str) -> Result<Self>
pub async fn new(url_str: &str) -> Result<Self>
Create a new connection to the database. The connection string follows the specified format:
connector_type://user:password@host/database?parameters
Connector type can be one of the following:
fileopens an SQLite connectionmysqlopens a MySQL connectionpostgres/postgresqlopens a PostgreSQL connection
All parameters should be given in the query string format:
?key1=val1&key2=val2. All parameters are optional.
As a special case, Microsoft SQL Server connections use the JDBC URI format:
jdbc:sqlserver://host\instance:port;key1=val1;key2=val2;
SQLite:
user/passworddo not do anything and can be emitted.hostshould point to the database file.db_nameparameter should give a name to the database attached for query namespacing.socket_timeoutdefined in seconds. Acts as the busy timeout in SQLite. When set, queries that are waiting for a lock to be released will return theTimeouterror after the defined value.
PostgreSQL:
sslmodeeitherdisable,preferorrequire. Read moresslcertshould point to a PEM certificate file.sslidentityshould point to a PKCS12 certificate database.sslpasswordthe password to open the PKCS12 database.sslaccepteitherstrictoraccept_invalid_certs. If strict, the certificate needs to be valid and in the CA certificates.accept_invalid_certsaccepts any certificate from the server and can lead to weakened security. Defaults tostrict.schemathe default search path.hostadditionally the host can be given as a parameter, typically in cases when connectiong to the database through a unix socket to separate the database name from the database path, such aspostgresql:///dbname?host=/var/run/postgresql.socket_timeoutdefined in seconds. If set, a query will return aTimeouterror if it fails to resolve before given time.connect_timeoutdefined in seconds (default: 5). Connecting to a database will return aConnectTimeouterror if taking more than the defined value.pgbouncereithertrueorfalse. If set, allows usage with the pgBouncer connection pool in transaction mode. Additionally a transaction is required for every query for the mode to work. When starting a new transaction, a deallocation queryDEALLOCATE ALLis executed right afterBEGINto avoid possible collisions with statements created in other sessions.statement_cache_size, number of prepared statements kept cached. Defaults to 500, which means caching is off. Ifpgbouncermode is enabled, caching is always off.optionsSpecifies command-line options to send to the server at connection start. Read more
MySQL:
sslcertshould point to a PEM certificate file.sslidentityshould point to a PKCS12 certificate database.sslpasswordthe password to open the PKCS12 database.sslaccepteitherstrictoraccept_invalid_certs. If strict, the certificate needs to be valid and in the CA certificates.accept_invalid_certsaccepts any certificate from the server and can lead to weakened security. Defaults tostrict.socketneeded when connecting to MySQL database through a unix socket. When set, the host parameter is dismissed.socket_timeoutdefined in seconds. If set, a query will return aTimeouterror if it fails to resolve before given time.connect_timeoutdefined in seconds (default: 5). Connecting to a database will return aConnectTimeouterror if taking more than the defined value.
Microsoft SQL Server:
encryptif set totrueencrypts all traffic over TLS. Iffalse, only the login details are encrypted. A special valueDANGER_PLAINTEXTwill disable TLS completely, including sending login credentials as plaintext.usersets the login name.passwordsets the login password.databasesets the database to connect to.trustServerCertificateif set totrue, accepts any kind of certificate from the server.socketTimeoutdefined in seconds. If set, a query will return aTimeouterror if it fails to resolve before given time.connectTimeoutdefined in seconds (default: 5). Connecting to a database will return aConnectTimeouterror if taking more than the defined value.connectionLimitdefines the maximum number of connections opened to the database.schemathe name of the lookup schema. Only stored to the connection, must be used in every query to be effective.isolationLevelthe transaction isolation level. Possible values:READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ,SNAPSHOT,SERIALIZABLE.
Sourcepub fn new_in_memory() -> Result<Sqlint>
Available on sqlite only.
pub fn new_in_memory() -> Result<Sqlint>
sqlite only.Open a new SQLite database in memory.
Sourcepub fn connection_info(&self) -> &ConnectionInfo
pub fn connection_info(&self) -> &ConnectionInfo
Info about the connection and underlying database.
Trait Implementations§
Source§impl Queryable for Sqlint
impl Queryable for Sqlint
Source§fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Query<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Query<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the given query.
Source§fn query_raw<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn query_raw<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a query given as SQL, interpolating the given parameters.
Source§fn query_raw_typed<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn query_raw_typed<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a query given as SQL, interpolating the given parameters. Read more
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Query<'life1>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Query<'life1>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the given query, returning the number of affected rows.
Source§fn execute_raw<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn execute_raw<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a query given as SQL, interpolating the given parameters and
returning the number of affected rows.
Source§fn execute_raw_typed<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn execute_raw_typed<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
sql: &'life1 str,
params: &'life2 [Value<'life3>],
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a query given as SQL, interpolating the given parameters and
returning the number of affected rows. Read more
Source§fn raw_cmd<'life0, 'life1, 'async_trait>(
&'life0 self,
cmd: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn raw_cmd<'life0, 'life1, 'async_trait>(
&'life0 self,
cmd: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Run a command in the database, for queries that can’t be run using
prepared statements.
Source§fn version<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn version<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Return the version of the underlying database, queried directly from the
source. This corresponds to the
version() function on PostgreSQL for
example. The version string is returned directly without any form of
parsing or normalization.Source§fn is_healthy(&self) -> bool
fn is_healthy(&self) -> bool
Returns false, if connection is considered to not be in a working state.
Source§fn begin_statement(&self) -> &'static str
fn begin_statement(&self) -> &'static str
Statement to begin a transaction
Source§fn set_tx_isolation_level<'life0, 'async_trait>(
&'life0 self,
isolation_level: IsolationLevel,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn set_tx_isolation_level<'life0, 'async_trait>(
&'life0 self,
isolation_level: IsolationLevel,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sets the transaction isolation level to given value.
Implementers have to make sure that the passed isolation level is valid for the underlying database.
Source§fn requires_isolation_first(&self) -> bool
fn requires_isolation_first(&self) -> bool
Signals if the isolation level SET needs to happen before or after the tx BEGIN.
Source§fn select<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Select<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn select<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Select<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute a
SELECT query.Source§fn insert<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Insert<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn insert<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Insert<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute an
INSERT query.Source§fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Update<'life1>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Update<'life1>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute an
UPDATE query, returning the number of affected rows.Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Delete<'life1>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
q: Delete<'life1>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute a
DELETE query, returning the number of affected rows.Source§fn server_reset_query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_: &'life1 Transaction<'life2>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn server_reset_query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_: &'life1 Transaction<'life2>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute an arbitrary function in the beginning of each transaction.
Source§impl TransactionCapable for Sqlint
impl TransactionCapable for Sqlint
Source§fn start_transaction<'life0, 'async_trait>(
&'life0 self,
isolation: Option<IsolationLevel>,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn start_transaction<'life0, 'async_trait>(
&'life0 self,
isolation: Option<IsolationLevel>,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Starts a new transaction
Auto Trait Implementations§
impl Freeze for Sqlint
impl !RefUnwindSafe for Sqlint
impl Send for Sqlint
impl Sync for Sqlint
impl Unpin for Sqlint
impl !UnwindSafe for Sqlint
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
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,
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,
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,
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,
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,
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,
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,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.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> 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>
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 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>
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
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) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§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,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§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
Source§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
Source§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
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
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
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
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
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
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
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
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.