mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 09:51:02 +00:00
396762510a
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
53 lines
2.4 KiB
Rust
53 lines
2.4 KiB
Rust
// Copyright 2019-2025 Parity Technologies (UK) Ltd.
|
|
// This file is dual-licensed as Apache-2.0 or GPL-3.0.
|
|
// see LICENSE for license details.
|
|
|
|
//! # The Subxt client.
|
|
//!
|
|
//! The client forms the entry point to all of the Subxt APIs. Every client implements one or
|
|
//! both of [`crate::client::OfflineClientT`] and [`crate::client::OnlineClientT`].
|
|
//!
|
|
//! Subxt ships with three clients which implement one or both of traits:
|
|
//! - An [online client](crate::client::OnlineClient).
|
|
//! - An [offline client](crate::client::OfflineClient).
|
|
//! - A light client (which is currently still unstable).
|
|
//!
|
|
//! In theory it's possible for users to implement their own clients, although this isn't generally
|
|
//! expected.
|
|
//!
|
|
//! The provided clients are all generic over the [`crate::config::Config`] that they accept, which
|
|
//! determines how they will interact with the chain.
|
|
//!
|
|
//! In the case of the [`crate::OnlineClient`], we have various ways to instantiate it:
|
|
//!
|
|
//! - [`crate::OnlineClient::new()`] to connect to a node running locally. This uses the default Subxt
|
|
//! backend, and the default RPC client.
|
|
//! - [`crate::OnlineClient::from_url()`] to connect to a node at a specific URL. This uses the default Subxt
|
|
//! backend, and the default RPC client.
|
|
//! - [`crate::OnlineClient::from_rpc_client()`] to instantiate the client with a [`crate::backend::rpc::RpcClient`].
|
|
//! - [`crate::OnlineClient::from_backend()`] to instantiate Subxt using a custom backend. Currently there
|
|
//! is just one backend, [`crate::backend::legacy::LegacyBackend`]. This backend can be instantiated from
|
|
//! a [`crate::backend::rpc::RpcClient`].
|
|
//!
|
|
//! [`crate::backend::rpc::RpcClient`] can itself be instantiated from anything that implements the low level
|
|
//! [`crate::backend::rpc::RpcClientT`] trait; this allows you to decide how Subxt will attempt to talk to a node
|
|
//! if you'd prefer something other default client. We use this approach under the hood to implement the light client.
|
|
//!
|
|
//! ## Examples
|
|
//!
|
|
//! Most of the other examples will instantiate a client. Here are a couple of examples for less common
|
|
//! cases.
|
|
//!
|
|
//! ### Writing a custom [`crate::backend::rpc::RpcClientT`] implementation:
|
|
//!
|
|
//! ```rust,ignore
|
|
#![doc = include_str!("../../../examples/setup_client_custom_rpc.rs")]
|
|
//! ```
|
|
//!
|
|
//! ### Creating an [`crate::OfflineClient`]:
|
|
//!
|
|
//! ```rust,ignore
|
|
#![doc = include_str!("../../../examples/setup_client_offline.rs")]
|
|
//! ```
|
|
//!
|