Struct sui_sdk::apis::ReadApi

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

The main read API structure with functions for retrieving data about different objects and transactions

Implementations§

source§

impl ReadApi

source

pub async fn get_owned_objects( &self, address: SuiAddress, query: Option<SuiObjectResponseQuery>, cursor: Option<ObjectID>, limit: Option<usize>, ) -> SuiRpcResult<ObjectsPage>

Return a paginated response with the objects owned by the given address, or an error upon failure.

Note that if the address owns more than QUERY_MAX_RESULT_LIMIT objects (default is 50), the pagination is not accurate, because previous page may have been updated when the next page is fetched.

§Examples
use sui_sdk::SuiClientBuilder;
use sui_types::base_types::SuiAddress;
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let address = SuiAddress::from_str("0x0000....0000")?;
    let owned_objects = sui
        .read_api()
        .get_owned_objects(address, None, None, None)
        .await?;
    Ok(())
}
source

pub async fn get_dynamic_fields( &self, object_id: ObjectID, cursor: Option<ObjectID>, limit: Option<usize>, ) -> SuiRpcResult<DynamicFieldPage>

Return a paginated response with the dynamic fields owned by the given [ObjectID], or an error upon failure.

The return type is a list of DynamicFieldInfo objects, where the field name is always present, represented as a Move Value.

If the field is a dynamic field, returns the ID of the Field object (which contains both the name and the value). If the field is a dynamic object field, it returns the ID of the Object (the value of the field).

§Examples
use sui_sdk::SuiClientBuilder;
use sui_types::base_types::{ObjectID, SuiAddress};
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let address = SuiAddress::from_str("0x0000....0000")?;
    let owned_objects = sui
        .read_api()
        .get_owned_objects(address, None, None, None)
        .await?;
    // this code example assumes that there are previous owned objects
    let object = owned_objects.data.get(0).expect(&format!(
        "No owned objects for this address {}",
        address
    ));
    let object_data = object.data.as_ref().expect(&format!(
        "No object data for this SuiObjectResponse {:?}",
        object
    ));
    let object_id = object_data.object_id;
    let dynamic_fields = sui
        .read_api()
        .get_dynamic_fields(object_id, None, None)
        .await?;
    Ok(())
}
source

pub async fn get_dynamic_field_object( &self, parent_object_id: ObjectID, name: DynamicFieldName, ) -> SuiRpcResult<SuiObjectResponse>

Return the dynamic field object information for a specified object.

source

pub async fn try_get_parsed_past_object( &self, object_id: ObjectID, version: SequenceNumber, options: SuiObjectDataOptions, ) -> SuiRpcResult<SuiPastObjectResponse>

Return a parsed past object for the provided [ObjectID] and version, or an error upon failure.

An object’s version increases (though it is not guaranteed that it increases always by 1) when the object is mutated. A past object can be used to understand how the object changed over time, i.e. what was the total balance at a specific version.

§Examples
use sui_sdk::SuiClientBuilder;
use sui_types::base_types::{ObjectID, SuiAddress};
use sui_json_rpc_types::SuiObjectDataOptions;
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let address = SuiAddress::from_str("0x0000....0000")?;
    let owned_objects = sui
        .read_api()
        .get_owned_objects(address, None, None, None)
        .await?;
    // this code example assumes that there are previous owned objects
    let object = owned_objects.data.get(0).expect(&format!(
        "No owned objects for this address {}",
        address
    ));
    let object_data = object.data.as_ref().expect(&format!(
        "No object data for this SuiObjectResponse {:?}",
        object
    ));
    let object_id = object_data.object_id;
    let version = object_data.version;
    let past_object = sui
        .read_api()
        .try_get_parsed_past_object(
            object_id,
            version,
            SuiObjectDataOptions {
                show_type: true,
                show_owner: true,
                show_previous_transaction: true,
                show_display: true,
                show_content: true,
                show_bcs: true,
                show_storage_rebate: true,
            },
        )
        .await?;
    Ok(())
}
source

pub async fn try_multi_get_parsed_past_object( &self, past_objects: Vec<SuiGetPastObjectRequest>, options: SuiObjectDataOptions, ) -> SuiRpcResult<Vec<SuiPastObjectResponse>>

Return a list of [SuiPastObjectResponse] objects, or an error upon failure.

See this function for more details about past objects.

§Examples
use sui_sdk::SuiClientBuilder;
use sui_types::base_types::{ObjectID, SuiAddress};
use sui_json_rpc_types::{SuiObjectDataOptions, SuiGetPastObjectRequest};
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let address = SuiAddress::from_str("0x0000....0000")?;
    let owned_objects = sui
        .read_api()
        .get_owned_objects(address, None, None, None)
        .await?;
    // this code example assumes that there are previous owned objects
    let object = owned_objects.data.get(0).expect(&format!(
        "No owned objects for this address {}",
        address
    ));
    let object_data = object.data.as_ref().expect(&format!(
        "No object data for this SuiObjectResponse {:?}",
        object
    ));
    let object_id = object_data.object_id;
    let version = object_data.version;
    let past_object = sui
        .read_api()
        .try_get_parsed_past_object(
            object_id,
            version,
            SuiObjectDataOptions {
                show_type: true,
                show_owner: true,
                show_previous_transaction: true,
                show_display: true,
                show_content: true,
                show_bcs: true,
                show_storage_rebate: true,
            },
        )
        .await?;
    let past_object = past_object.into_object()?;
    let multi_past_object = sui
        .read_api()
        .try_multi_get_parsed_past_object(
            vec![SuiGetPastObjectRequest {
                object_id: past_object.object_id,
                version: past_object.version,
            }],
            SuiObjectDataOptions {
                show_type: true,
                show_owner: true,
                show_previous_transaction: true,
                show_display: true,
                show_content: true,
                show_bcs: true,
                show_storage_rebate: true,
            },
        )
        .await?;
    Ok(())
}
source

pub async fn get_object_with_options( &self, object_id: ObjectID, options: SuiObjectDataOptions, ) -> SuiRpcResult<SuiObjectResponse>

Return a [SuiObjectResponse] based on the provided [ObjectID] and [SuiObjectDataOptions], or an error upon failure.

The [SuiObjectResponse] contains two fields:

  1. data for the object’s data (see SuiObjectData),
  2. error for the error (if any) (see SuiObjectResponseError).
§Examples
use sui_sdk::SuiClientBuilder;
use sui_types::base_types::SuiAddress;
use sui_json_rpc_types::SuiObjectDataOptions;
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let address = SuiAddress::from_str("0x0000....0000")?;
    let owned_objects = sui
        .read_api()
        .get_owned_objects(address, None, None, None)
        .await?;
    // this code example assumes that there are previous owned objects
    let object = owned_objects.data.get(0).expect(&format!(
        "No owned objects for this address {}",
        address
    ));
    let object_data = object.data.as_ref().expect(&format!(
        "No object data for this SuiObjectResponse {:?}",
        object
    ));
    let object_id = object_data.object_id;
    let object = sui.read_api().get_object_with_options(object_id,
            SuiObjectDataOptions {
                show_type: true,
                show_owner: true,
                show_previous_transaction: true,
                show_display: true,
                show_content: true,
                show_bcs: true,
                show_storage_rebate: true,
            },
        ).await?;
    Ok(())
}
source

pub async fn multi_get_object_with_options( &self, object_ids: Vec<ObjectID>, options: SuiObjectDataOptions, ) -> SuiRpcResult<Vec<SuiObjectResponse>>

Return a list of [SuiObjectResponse] from the given vector of [ObjectID]s and [SuiObjectDataOptions], or an error upon failure.

If only one object is needed, use the get_object_with_options function instead.

§Examples
use sui_sdk::SuiClientBuilder;
use sui_types::base_types::SuiAddress;
use sui_json_rpc_types::SuiObjectDataOptions;
use std::str::FromStr;
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let address = SuiAddress::from_str("0x0000....0000")?;
    let owned_objects = sui
        .read_api()
        .get_owned_objects(address, None, None, None)
        .await?;
    // this code example assumes that there are previous owned objects
    let object = owned_objects.data.get(0).expect(&format!(
        "No owned objects for this address {}",
        address
    ));
    let object_data = object.data.as_ref().expect(&format!(
        "No object data for this SuiObjectResponse {:?}",
        object
    ));
    let object_id = object_data.object_id;
    let object_ids = vec![object_id]; // and other object ids
    let object = sui.read_api().multi_get_object_with_options(object_ids,
            SuiObjectDataOptions {
                show_type: true,
                show_owner: true,
                show_previous_transaction: true,
                show_display: true,
                show_content: true,
                show_bcs: true,
                show_storage_rebate: true,
            },
        ).await?;
    Ok(())
}
source

pub async fn get_move_object_bcs( &self, object_id: ObjectID, ) -> SuiRpcResult<Vec<u8>>

Return An object’s bcs content Vec<u8> based on the provided [ObjectID], or an error upon failure.

source

pub async fn get_total_transaction_blocks(&self) -> SuiRpcResult<u64>

Return the total number of transaction blocks known to server, or an error upon failure.

§Examples
use sui_sdk::SuiClientBuilder;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let total_transaction_blocks = sui
        .read_api()
        .get_total_transaction_blocks()
        .await?;
    Ok(())
}
source

pub async fn get_transaction_with_options( &self, digest: TransactionDigest, options: SuiTransactionBlockResponseOptions, ) -> SuiRpcResult<SuiTransactionBlockResponse>

Return a transaction and its effects in a [SuiTransactionBlockResponse] based on its [TransactionDigest], or an error upon failure.

source

pub async fn multi_get_transactions_with_options( &self, digests: Vec<TransactionDigest>, options: SuiTransactionBlockResponseOptions, ) -> SuiRpcResult<Vec<SuiTransactionBlockResponse>>

Return a list of [SuiTransactionBlockResponse] based on the given vector of [TransactionDigest], or an error upon failure.

If only one transaction data is needed, use the get_transaction_with_options function instead.

source

pub async fn get_committee_info( &self, epoch: Option<BigInt<u64>>, ) -> SuiRpcResult<SuiCommittee>

Return the [SuiCommittee] information for the provided epoch, or an error upon failure.

The [SuiCommittee] contains the validators list and their information (name and stakes).

The argument epoch is either a known epoch id or None for the current epoch.

§Examples
use sui_sdk::SuiClientBuilder;

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    let sui = SuiClientBuilder::default().build_localnet().await?;
    let committee_info = sui
        .read_api()
        .get_committee_info(None)
        .await?;
    Ok(())
}
source

pub async fn query_transaction_blocks( &self, query: SuiTransactionBlockResponseQuery, cursor: Option<TransactionDigest>, limit: Option<usize>, descending_order: bool, ) -> SuiRpcResult<TransactionBlocksPage>

Return a paginated response with all transaction blocks information, or an error upon failure.

source

pub async fn get_chain_identifier(&self) -> SuiRpcResult<String>

Return the first four bytes of the chain’s genesis checkpoint digest, or an error upon failure.

source

pub async fn get_checkpoint(&self, id: CheckpointId) -> SuiRpcResult<Checkpoint>

Return a checkpoint, or an error upon failure.

A Sui checkpoint is a sequence of transaction sets that a quorum of validators agree upon as having been executed within the Sui system.

source

pub async fn get_checkpoints( &self, cursor: Option<BigInt<u64>>, limit: Option<usize>, descending_order: bool, ) -> SuiRpcResult<CheckpointPage>

Return a paginated list of checkpoints, or an error upon failure.

source

pub async fn get_latest_checkpoint_sequence_number( &self, ) -> SuiRpcResult<CheckpointSequenceNumber>

Return the sequence number of the latest checkpoint that has been executed, or an error upon failure.

source

pub fn get_transactions_stream( &self, query: SuiTransactionBlockResponseQuery, cursor: Option<TransactionDigest>, descending_order: bool, ) -> impl Stream<Item = SuiTransactionBlockResponse> + '_

Return a stream of [SuiTransactionBlockResponse], or an error upon failure.

source

pub async fn subscribe_transaction( &self, filter: TransactionFilter, ) -> SuiRpcResult<impl Stream<Item = SuiRpcResult<SuiTransactionBlockEffects>>>

Subscribe to a stream of transactions.

This is only available through WebSockets.

source

pub async fn get_normalized_move_modules_by_package( &self, package: ObjectID, ) -> SuiRpcResult<BTreeMap<String, SuiMoveNormalizedModule>>

Return a map consisting of the move package name and the normalized module, or an error upon failure.

source

pub async fn get_reference_gas_price(&self) -> SuiRpcResult<u64>

Return the reference gas price, or an error upon failure.

source

pub async fn dry_run_transaction_block( &self, tx: TransactionData, ) -> SuiRpcResult<DryRunTransactionBlockResponse>

Dry run a transaction block given the provided transaction data. Returns an error upon failure.

Simulate running the transaction, including all standard checks, without actually running it. This is useful for estimating the gas fees of a transaction before executing it. You can also use it to identify any side-effects of a transaction before you execute it on the network.

source

pub async fn dev_inspect_transaction_block( &self, sender_address: SuiAddress, tx: TransactionKind, gas_price: Option<BigInt<u64>>, epoch: Option<BigInt<u64>>, additional_args: Option<DevInspectArgs>, ) -> SuiRpcResult<DevInspectResults>

Return the inspection of the transaction block, or an error upon failure.

Use this function to inspect the current state of the network by running a programmable transaction block without committing its effects on chain. Unlike dry_run_transaction_block, dev inspect will not validate whether the transaction block would succeed or fail under normal circumstances, e.g.:

  • Transaction inputs are not checked for ownership (i.e. you can construct calls involving objects you do not own).
  • Calls are not checked for visibility (you can call private functions on modules)
  • Inputs of any type can be constructed and passed in, (including Coins and other objects that would usually need to be constructed with a move call).
  • Function returns do not need to be used, even if they do not have drop.

Dev inspect’s output includes a breakdown of results returned by every transaction in the block, as well as the transaction’s effects.

To run an accurate simulation of a transaction and understand whether it will successfully validate and run, use the dry_run_transaction_block function instead.

source

pub async fn get_protocol_config( &self, version: Option<BigInt<u64>>, ) -> SuiRpcResult<ProtocolConfigResponse>

Return the protocol config, or an error upon failure.

source

pub async fn try_get_object_before_version( &self, object_id: ObjectID, version: SequenceNumber, ) -> SuiRpcResult<SuiPastObjectResponse>

Trait Implementations§

source§

impl DataReader for ReadApi

source§

fn get_reference_gas_price<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns the reference gas price as a u64 or an error otherwise

source§

fn get_owned_objects<'life0, 'async_trait>( &'life0 self, address: SuiAddress, object_type: StructTag, ) -> Pin<Box<dyn Future<Output = Result<Vec<ObjectInfo>, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

source§

fn get_object_with_options<'life0, 'async_trait>( &'life0 self, object_id: ObjectID, options: SuiObjectDataOptions, ) -> Pin<Box<dyn Future<Output = Result<SuiObjectResponse, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

source§

impl Debug for ReadApi

source§

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

Formats the value using the given formatter. Read more

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
§

impl<U> As for U

§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a Request
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> PolicyExt for T
where T: ?Sized,

§

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
§

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

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
§

impl<T> MaybeSend for T
where T: Send,