Fix broken links in solana-client (#23503)

* Fix broken links in solana-client

* Revise docs for RpcClient::new_sender

* Add docs for RpcClient::new_mock etc

* Fix doc warnings on RpcSender

* rustfmt
This commit is contained in:
Brian Anderson
2022-03-09 22:42:23 -06:00
committed by GitHub
parent f68c5a274d
commit 72af687aa6
3 changed files with 174 additions and 36 deletions

View File

@ -6,6 +6,7 @@
//! //!
//! [JSON-RPC]: https://www.jsonrpc.org/specification //! [JSON-RPC]: https://www.jsonrpc.org/specification
pub use crate::mock_sender::Mocks;
#[allow(deprecated)] #[allow(deprecated)]
use crate::rpc_deprecated_config::{ use crate::rpc_deprecated_config::{
RpcConfirmedBlockConfig, RpcConfirmedTransactionConfig, RpcConfirmedBlockConfig, RpcConfirmedTransactionConfig,
@ -15,7 +16,7 @@ use {
crate::{ crate::{
client_error::{ClientError, ClientErrorKind, Result as ClientResult}, client_error::{ClientError, ClientErrorKind, Result as ClientResult},
http_sender::HttpSender, http_sender::HttpSender,
mock_sender::{MockSender, Mocks}, mock_sender::MockSender,
rpc_client::{GetConfirmedSignaturesForAddress2Config, RpcClientConfig}, rpc_client::{GetConfirmedSignaturesForAddress2Config, RpcClientConfig},
rpc_config::{RpcAccountInfoConfig, *}, rpc_config::{RpcAccountInfoConfig, *},
rpc_request::{RpcError, RpcRequest, RpcResponseErrorData, TokenAccountsFilter}, rpc_request::{RpcError, RpcRequest, RpcResponseErrorData, TokenAccountsFilter},
@ -146,8 +147,8 @@ impl RpcClient {
/// ///
/// This is the basic constructor, allowing construction with any type of /// This is the basic constructor, allowing construction with any type of
/// `RpcSender`. Most applications should use one of the other constructors, /// `RpcSender`. Most applications should use one of the other constructors,
/// such as [`new`] and [`new_mock`], which create an `RpcClient` /// such as [`RpcClient::new`], [`RpcClient::new_with_commitment`] or
/// encapsulating an [`HttpSender`] and [`MockSender`] respectively. /// [`RpcClient::new_with_timeout`].
pub fn new_sender<T: RpcSender + Send + Sync + 'static>( pub fn new_sender<T: RpcSender + Send + Sync + 'static>(
sender: T, sender: T,
config: RpcClientConfig, config: RpcClientConfig,
@ -314,8 +315,34 @@ impl RpcClient {
/// Create a mock `RpcClient`. /// Create a mock `RpcClient`.
/// ///
/// See the [`MockSender`] documentation for an explanation of /// A mock `RpcClient` contains an implementation of [`RpcSender`] that does
/// how it treats the `url` argument. /// not use the network, and instead returns synthetic responses, for use in
/// tests.
///
/// It is primarily for internal use, with limited customizability, and
/// behaviors determined by internal Solana test cases. New users should
/// consider implementing `RpcSender` themselves and constructing
/// `RpcClient` with [`RpcClient::new_sender`] to get mock behavior.
///
/// Unless directed otherwise, a mock `RpcClient` will generally return a
/// reasonable default response to any request, at least for [`RpcRequest`]
/// values for which responses have been implemented.
///
/// This mock can be customized by changing the `url` argument, which is not
/// actually a URL, but a simple string directive that changes the mock
/// behavior in specific scenarios:
///
/// - It is customary to set the `url` to "succeeds" for mocks that should
/// return sucessfully, though this value is not actually interpreted.
///
/// - If `url` is "fails" then any call to `send` will return `Ok(Value::Null)`.
///
/// - Other possible values of `url` are specific to different `RpcRequest`
/// values. Read the implementation of (non-public) `MockSender` for
/// details.
///
/// The [`RpcClient::new_mock_with_mocks`] function offers further
/// customization options.
/// ///
/// # Examples /// # Examples
/// ///
@ -341,8 +368,43 @@ impl RpcClient {
/// Create a mock `RpcClient`. /// Create a mock `RpcClient`.
/// ///
/// See the [`MockSender`] documentation for an explanation of how it treats /// A mock `RpcClient` contains an implementation of [`RpcSender`] that does
/// the `url` argument. /// not use the network, and instead returns synthetic responses, for use in
/// tests.
///
/// It is primarily for internal use, with limited customizability, and
/// behaviors determined by internal Solana test cases. New users should
/// consider implementing `RpcSender` themselves and constructing
/// `RpcClient` with [`RpcClient::new_sender`] to get mock behavior.
///
/// Unless directed otherwise, a mock `RpcClient` will generally return a
/// reasonable default response to any request, at least for [`RpcRequest`]
/// values for which responses have been implemented.
///
/// This mock can be customized in two ways:
///
/// 1) By changing the `url` argument, which is not actually a URL, but a
/// simple string directive that changes the mock behavior in specific
/// scenarios.
///
/// It is customary to set the `url` to "succeeds" for mocks that should
/// return sucessfully, though this value is not actually interpreted.
///
/// If `url` is "fails" then any call to `send` will return `Ok(Value::Null)`.
///
/// Other possible values of `url` are specific to different `RpcRequest`
/// values. Read the implementation of `MockSender` (which is non-public)
/// for details.
///
/// 2) Custom responses can be configured by providing [`Mocks`]. This type
/// is a [`HashMap`] from [`RpcRequest`] to a JSON [`Value`] response,
/// Any entries in this map override the default behavior for the given
/// request.
///
/// The [`RpcClient::new_mock_with_mocks`] function offers further
/// customization options.
///
/// [`HashMap`]: std::collections::HashMap
/// ///
/// # Examples /// # Examples
/// ///

View File

@ -6,13 +6,14 @@
//! //!
//! [JSON-RPC]: https://www.jsonrpc.org/specification //! [JSON-RPC]: https://www.jsonrpc.org/specification
pub use crate::mock_sender::Mocks;
#[allow(deprecated)] #[allow(deprecated)]
use crate::rpc_deprecated_config::{RpcConfirmedBlockConfig, RpcConfirmedTransactionConfig}; use crate::rpc_deprecated_config::{RpcConfirmedBlockConfig, RpcConfirmedTransactionConfig};
use { use {
crate::{ crate::{
client_error::Result as ClientResult, client_error::Result as ClientResult,
http_sender::HttpSender, http_sender::HttpSender,
mock_sender::{MockSender, Mocks}, mock_sender::MockSender,
nonblocking::{self, rpc_client::get_rpc_request_str}, nonblocking::{self, rpc_client::get_rpc_request_str},
rpc_config::{RpcAccountInfoConfig, *}, rpc_config::{RpcAccountInfoConfig, *},
rpc_request::{RpcRequest, TokenAccountsFilter}, rpc_request::{RpcRequest, TokenAccountsFilter},
@ -103,8 +104,8 @@ pub struct GetConfirmedSignaturesForAddress2Config {
/// [`Processed`] commitment level. These exceptions are noted in the method /// [`Processed`] commitment level. These exceptions are noted in the method
/// documentation. /// documentation.
/// ///
/// [`Finalized`]: CommitmentLevel::Finalized /// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// [`Processed`]: CommitmentLevel::Processed /// [`Processed`]: solana_sdk::commitment_config::CommitmentLevel::Processed
/// [jsonprot]: https://docs.solana.com/developing/clients/jsonrpc-api /// [jsonprot]: https://docs.solana.com/developing/clients/jsonrpc-api
/// [JSON-RPC]: https://www.jsonrpc.org/specification /// [JSON-RPC]: https://www.jsonrpc.org/specification
/// [slots]: https://docs.solana.com/terminology#slot /// [slots]: https://docs.solana.com/terminology#slot
@ -145,6 +146,10 @@ pub struct GetConfirmedSignaturesForAddress2Config {
/// [`is_timeout`](crate::client_error::reqwest::Error::is_timeout) method /// [`is_timeout`](crate::client_error::reqwest::Error::is_timeout) method
/// returns `true`. The default timeout is 30 seconds, and may be changed by /// returns `true`. The default timeout is 30 seconds, and may be changed by
/// calling an appropriate constructor with a `timeout` parameter. /// calling an appropriate constructor with a `timeout` parameter.
///
/// [`ClientError`]: crate::client_error::ClientError
/// [`ClientErrorKind`]: crate::client_error::ClientErrorKind
/// [`ClientErrorKind::Reqwest`]: crate::client_error::ClientErrorKind::Reqwest
pub struct RpcClient { pub struct RpcClient {
rpc_client: nonblocking::rpc_client::RpcClient, rpc_client: nonblocking::rpc_client::RpcClient,
runtime: Option<tokio::runtime::Runtime>, runtime: Option<tokio::runtime::Runtime>,
@ -161,8 +166,8 @@ impl RpcClient {
/// ///
/// This is the basic constructor, allowing construction with any type of /// This is the basic constructor, allowing construction with any type of
/// `RpcSender`. Most applications should use one of the other constructors, /// `RpcSender`. Most applications should use one of the other constructors,
/// such as [`new`] and [`new_mock`], which create an `RpcClient` /// such as [`RpcClient::new`], [`RpcClient::new_with_commitment`] or
/// encapsulating an [`HttpSender`] and [`MockSender`] respectively. /// [`RpcClient::new_with_timeout`].
pub fn new_sender<T: RpcSender + Send + Sync + 'static>( pub fn new_sender<T: RpcSender + Send + Sync + 'static>(
sender: T, sender: T,
config: RpcClientConfig, config: RpcClientConfig,
@ -186,9 +191,10 @@ impl RpcClient {
/// "http://localhost:8899". /// "http://localhost:8899".
/// ///
/// The client has a default timeout of 30 seconds, and a default [commitment /// The client has a default timeout of 30 seconds, and a default [commitment
/// level][cl] of [`Finalized`](CommitmentLevel::Finalized). /// level][cl] of [`Finalized`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// ///
/// # Examples /// # Examples
/// ///
@ -211,6 +217,8 @@ impl RpcClient {
/// The client has a default timeout of 30 seconds, and a user-specified /// The client has a default timeout of 30 seconds, and a user-specified
/// [`CommitmentLevel`] via [`CommitmentConfig`]. /// [`CommitmentLevel`] via [`CommitmentConfig`].
/// ///
/// [`CommitmentLevel`]: solana_sdk::commitment_config::CommitmentLevel
///
/// # Examples /// # Examples
/// ///
/// ``` /// ```
@ -233,9 +241,10 @@ impl RpcClient {
/// "http://localhost:8899". /// "http://localhost:8899".
/// ///
/// The client has and a default [commitment level][cl] of /// The client has and a default [commitment level][cl] of
/// [`Finalized`](CommitmentLevel::Finalized). /// [`Finalized`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// ///
/// # Examples /// # Examples
/// ///
@ -335,8 +344,34 @@ impl RpcClient {
/// Create a mock `RpcClient`. /// Create a mock `RpcClient`.
/// ///
/// See the [`MockSender`] documentation for an explanation of /// A mock `RpcClient` contains an implementation of [`RpcSender`] that does
/// how it treats the `url` argument. /// not use the network, and instead returns synthetic responses, for use in
/// tests.
///
/// It is primarily for internal use, with limited customizability, and
/// behaviors determined by internal Solana test cases. New users should
/// consider implementing `RpcSender` themselves and constructing
/// `RpcClient` with [`RpcClient::new_sender`] to get mock behavior.
///
/// Unless directed otherwise, a mock `RpcClient` will generally return a
/// reasonable default response to any request, at least for [`RpcRequest`]
/// values for which responses have been implemented.
///
/// This mock can be customized by changing the `url` argument, which is not
/// actually a URL, but a simple string directive that changes the mock
/// behavior in specific scenarios:
///
/// - It is customary to set the `url` to "succeeds" for mocks that should
/// return sucessfully, though this value is not actually interpreted.
///
/// - If `url` is "fails" then any call to `send` will return `Ok(Value::Null)`.
///
/// - Other possible values of `url` are specific to different `RpcRequest`
/// values. Read the implementation of (non-public) `MockSender` for
/// details.
///
/// The [`RpcClient::new_mock_with_mocks`] function offers further
/// customization options.
/// ///
/// # Examples /// # Examples
/// ///
@ -362,8 +397,43 @@ impl RpcClient {
/// Create a mock `RpcClient`. /// Create a mock `RpcClient`.
/// ///
/// See the [`MockSender`] documentation for an explanation of how it treats /// A mock `RpcClient` contains an implementation of [`RpcSender`] that does
/// the `url` argument. /// not use the network, and instead returns synthetic responses, for use in
/// tests.
///
/// It is primarily for internal use, with limited customizability, and
/// behaviors determined by internal Solana test cases. New users should
/// consider implementing `RpcSender` themselves and constructing
/// `RpcClient` with [`RpcClient::new_sender`] to get mock behavior.
///
/// Unless directed otherwise, a mock `RpcClient` will generally return a
/// reasonable default response to any request, at least for [`RpcRequest`]
/// values for which responses have been implemented.
///
/// This mock can be customized in two ways:
///
/// 1) By changing the `url` argument, which is not actually a URL, but a
/// simple string directive that changes the mock behavior in specific
/// scenarios.
///
/// It is customary to set the `url` to "succeeds" for mocks that should
/// return sucessfully, though this value is not actually interpreted.
///
/// If `url` is "fails" then any call to `send` will return `Ok(Value::Null)`.
///
/// Other possible values of `url` are specific to different `RpcRequest`
/// values. Read the implementation of `MockSender` (which is non-public)
/// for details.
///
/// 2) Custom responses can be configured by providing [`Mocks`]. This type
/// is a [`HashMap`] from [`RpcRequest`] to a JSON [`Value`] response,
/// Any entries in this map override the default behavior for the given
/// request.
///
/// The [`RpcClient::new_mock_with_mocks`] function offers further
/// customization options.
///
/// [`HashMap`]: std::collections::HashMap
/// ///
/// # Examples /// # Examples
/// ///
@ -397,9 +467,10 @@ impl RpcClient {
/// Create an HTTP `RpcClient` from a [`SocketAddr`]. /// Create an HTTP `RpcClient` from a [`SocketAddr`].
/// ///
/// The client has a default timeout of 30 seconds, and a default [commitment /// The client has a default timeout of 30 seconds, and a default [commitment
/// level][cl] of [`Finalized`](CommitmentLevel::Finalized). /// level][cl] of [`Finalized`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// ///
/// # Examples /// # Examples
/// ///
@ -420,6 +491,8 @@ impl RpcClient {
/// The client has a default timeout of 30 seconds, and a user-specified /// The client has a default timeout of 30 seconds, and a user-specified
/// [`CommitmentLevel`] via [`CommitmentConfig`]. /// [`CommitmentLevel`] via [`CommitmentConfig`].
/// ///
/// [`CommitmentLevel`]: solana_sdk::commitment_config::CommitmentLevel
///
/// # Examples /// # Examples
/// ///
/// ``` /// ```
@ -442,9 +515,10 @@ impl RpcClient {
/// Create an HTTP `RpcClient` from a [`SocketAddr`] with specified timeout. /// Create an HTTP `RpcClient` from a [`SocketAddr`] with specified timeout.
/// ///
/// The client has a default [commitment level][cl] of [`Finalized`](CommitmentLevel::Finalized). /// The client has a default [commitment level][cl] of [`Finalized`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// ///
/// # Examples /// # Examples
/// ///
@ -469,7 +543,9 @@ impl RpcClient {
/// determines how thoroughly committed a transaction must be when waiting /// determines how thoroughly committed a transaction must be when waiting
/// for its confirmation or otherwise checking for confirmation. If not /// for its confirmation or otherwise checking for confirmation. If not
/// specified, the default commitment level is /// specified, the default commitment level is
/// [`Finalized`](CommitmentLevel::Finalized). /// [`Finalized`].
///
/// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// ///
/// The default commitment level is overridden when calling methods that /// The default commitment level is overridden when calling methods that
/// explicitly provide a [`CommitmentConfig`], like /// explicitly provide a [`CommitmentConfig`], like
@ -503,7 +579,8 @@ impl RpcClient {
/// containing an [`RpcResponseError`] with `code` set to /// containing an [`RpcResponseError`] with `code` set to
/// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]. /// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`].
/// ///
/// [`RpcResponseError`]: RpcError::RpcResponseError /// [`RpcError`]: crate::rpc_request::RpcError
/// [`RpcResponseError`]: crate::rpc_request::RpcError::RpcResponseError
/// [`JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE /// [`JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE
/// [`JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE /// [`JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE
/// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY /// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY
@ -616,7 +693,8 @@ impl RpcClient {
/// containing an [`RpcResponseError`] with `code` set to /// containing an [`RpcResponseError`] with `code` set to
/// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]. /// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`].
/// ///
/// [`RpcResponseError`]: RpcError::RpcResponseError /// [`RpcError`]: crate::rpc_request::RpcError
/// [`RpcResponseError`]: crate::rpc_request::RpcError::RpcResponseError
/// [`JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE /// [`JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE
/// [`JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE /// [`JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE
/// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY /// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY
@ -690,7 +768,8 @@ impl RpcClient {
/// containing an [`RpcResponseError`] with `code` set to /// containing an [`RpcResponseError`] with `code` set to
/// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]. /// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`].
/// ///
/// [`RpcResponseError`]: RpcError::RpcResponseError /// [`RpcError`]: crate::rpc_request::RpcError
/// [`RpcResponseError`]: crate::rpc_request::RpcError::RpcResponseError
/// [`JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE /// [`JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE
/// [`JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE /// [`JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE
/// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY /// [`JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY`]: crate::rpc_custom_error::JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY
@ -2102,7 +2181,7 @@ impl RpcClient {
/// ///
/// This method uses the [`Finalized`] [commitment level][cl]. /// This method uses the [`Finalized`] [commitment level][cl].
/// ///
/// [`Finalized`]: CommitmentLevel::Finalized /// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// [`get_blocks_with_limit`]: RpcClient::get_blocks_with_limit. /// [`get_blocks_with_limit`]: RpcClient::get_blocks_with_limit.
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// ///
@ -2161,7 +2240,7 @@ impl RpcClient {
/// This method returns an error if the given commitment level is below /// This method returns an error if the given commitment level is below
/// [`Confirmed`]. /// [`Confirmed`].
/// ///
/// [`Confirmed`]: CommitmentLevel::Confirmed /// [`Confirmed`]: solana_sdk::commitment_config::CommitmentLevel::Confirmed
/// ///
/// # RPC Reference /// # RPC Reference
/// ///
@ -2254,7 +2333,7 @@ impl RpcClient {
/// [`Confirmed`]. /// [`Confirmed`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Confirmed`]: CommitmentLevel::Confirmed /// [`Confirmed`]: solana_sdk::commitment_config::CommitmentLevel::Confirmed
/// ///
/// # RPC Reference /// # RPC Reference
/// ///
@ -2415,7 +2494,7 @@ impl RpcClient {
/// [`Confirmed`]. /// [`Confirmed`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Confirmed`]: CommitmentLevel::Confirmed /// [`Confirmed`]: solana_sdk::commitment_config::CommitmentLevel::Confirmed
/// ///
/// # RPC Reference /// # RPC Reference
/// ///
@ -2505,7 +2584,7 @@ impl RpcClient {
/// ///
/// This method uses the [`Finalized`] [commitment level][cl]. /// This method uses the [`Finalized`] [commitment level][cl].
/// ///
/// [`Finalized`]: CommitmentLevel::Finalized /// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// ///
/// # RPC Reference /// # RPC Reference
@ -2560,7 +2639,7 @@ impl RpcClient {
/// [`Confirmed`]. /// [`Confirmed`].
/// ///
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// [`Confirmed`]: CommitmentLevel::Confirmed /// [`Confirmed`]: solana_sdk::commitment_config::CommitmentLevel::Confirmed
/// ///
/// # RPC Reference /// # RPC Reference
/// ///
@ -2926,7 +3005,7 @@ impl RpcClient {
/// ///
/// This method uses the [`Finalized`] [commitment level][cl]. /// This method uses the [`Finalized`] [commitment level][cl].
/// ///
/// [`Finalized`]: CommitmentLevel::Finalized /// [`Finalized`]: solana_sdk::commitment_config::CommitmentLevel::Finalized
/// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment /// [cl]: https://docs.solana.com/developing/clients/jsonrpc-api#configuring-state-commitment
/// ///
/// # RPC Reference /// # RPC Reference
@ -3084,6 +3163,7 @@ impl RpcClient {
/// [`RpcError::ForUser`]. This is unlike [`get_account_with_commitment`], /// [`RpcError::ForUser`]. This is unlike [`get_account_with_commitment`],
/// which returns `Ok(None)` if the account does not exist. /// which returns `Ok(None)` if the account does not exist.
/// ///
/// [`RpcError::ForUser`]: crate::rpc_request::RpcError::ForUser
/// [`get_account_with_commitment`]: RpcClient::get_account_with_commitment /// [`get_account_with_commitment`]: RpcClient::get_account_with_commitment
/// ///
/// # RPC Reference /// # RPC Reference

View File

@ -23,11 +23,7 @@ pub struct RpcTransportStats {
/// `RpcSender` implements the underlying transport of requests to, and /// `RpcSender` implements the underlying transport of requests to, and
/// responses from, a Solana node, and is used primarily by [`RpcClient`]. /// responses from, a Solana node, and is used primarily by [`RpcClient`].
/// ///
/// It is typically implemented by [`HttpSender`] in production, and /// [`RpcClient`]: crate::rpc_client::RpcClient
/// [`MockSender`] in unit tests.
///
/// [`HttpSender`]: crate::http_sender::HttpSender
/// [`MockSender`]: crate::mock_sender::MockSender
#[async_trait] #[async_trait]
pub trait RpcSender { pub trait RpcSender {
async fn send( async fn send(