pub async fn fetch_zerocopy_account_async<T: Pod + Discriminator + Owner>(
client: &RpcClient,
pubkey: Pubkey,
) -> Result<T, OnDemandError>
Expand description
Fetches an account asynchronously using the provided client and public key.
§Arguments
client
- The non-blocking RPC client used to fetch the account.pubkey
- The public key of the account to fetch.
§Generic Parameters
T
- The type of the account data. Must implementbytemuck::Pod
,Discriminator
, andOwner
.
§Returns
Returns a Result
containing the fetched account data of type T
if successful, or an OnDemandError
if an error occurs.
§Errors
This function can return the following errors:
OnDemandError::AccountNotFound
- If the account is not found.OnDemandError::Message("no discriminator found")
- If no discriminator is found in the account data.OnDemandError::Message("Discriminator error, check the account type")
- If the discriminator does not match the expected value.OnDemandError::Message("AnchorParseError")
- If there is an error parsing the account data into typeT
.
§Example
use switchboard_solana::client::NonblockingRpcClient;
use switchboard_solana::error::OnDemandError;
use switchboard_solana::types::{Discriminator, Owner};
use bytemuck::Pod;
use solana_sdk::pubkey::Pubkey;
async fn example(client: &NonblockingRpcClient, pubkey: Pubkey) -> Result<(), OnDemandError> {
let account_data: MyAccountType = fetch_zerocopy_account_async(client, pubkey).await?;
// Do something with the fetched account data...
Ok(())
}