4 releases (1 stable)
1.0.0 | Sep 10, 2024 |
---|---|
0.3.2 | Jul 24, 2024 |
0.2.0 | Dec 21, 2023 |
0.1.0 | Dec 21, 2023 |
#6 in #stellar
615KB
8K
SLoC
Stellar-rs - Empowering Stellar Developers with Rust's Performance and Security
API documentation is available here.
The Rust Stellar SDK enables efficient and safe communication with Stellar's Horizon API. Our goal is to provide an optimal developer experience by utilizing Rust's performance and safety features. By employing the Type State Builder Pattern, we prevent incomplete or invalid requests from being made, reducing the possibility of runtime exceptions and improving API request reliability.
Installation
To add stellar-rs
to your project, run the following Cargo command in your
project directory:
cargo add stellar-rs
Alternatively, add the following line to your Cargo.toml
:
stellar-rs = "1.0.0"
Getting Started
To begin communicating with the Horizon API, initialize a new Horizon client. You can specify whether to use the testnet or the production environment.
use stellar_rs::horizon_client::HorizonClient;
async fn example() -> Result<(), Box<dyn std::error::Error>> {
let horizon_client = HorizonClient::new("https://horizon-testnet.stellar.org")?;
Ok(())
}
After initializing the Horizon client, specify the request you want to execute. The request builders ensure that you construct valid requests, preventing invalid parameter combinations.
use stellar_rs::assets::prelude::{AllAssetsRequest, AllAssetsResponse};
static ACCOUNT_ID: &str = "GDIGRW2H37U3O5WPMQFWGN35DDVZAYYTIMGLYVQI4XTATZBW4FXEATRE";
// Construct the request
let accounts_request = AccountsRequest::new()
.set_signer_filter(ACCOUNT_ID)
.unwrap()
.set_limit(10)
.unwrap();
Once the signer_filter
is set, it cannot be changed again. The state
transitions from one where no filter is applied to one where the signer_filter
is set. Similarly, methods like set_asset_filter
, set_liquidity_pool_filter
,
and set_sponsor_filter
become unavailable because the Horizon API allows only
one of these filters per request. This is enforced using the type state builder
pattern.
Once the request is constructed, you can execute it using the previously initialized Horizon client:
use stellar_rs::assets::prelude::{AllAssetsRequest, AllAssetsResponse};
let accounts_response = horizon_client.get_account_list(&accounts_request).await?;
Supported Endpoints
As of version 1.0, stellar-rs
supports all endpoints and models for the Horizon API:
- Accounts
- Assets
- Claimable Balances
- Effects
- Fee Stats
- Ledgers
- Liquidity Pools
- Operations
- Offers
- Order Books
- Paths
- Payments
- Trades
- Trade Aggregations
- Transactions
Contributing
Contributions are welcome! If you find a bug or have a feature request, please open an issue. If you'd like to contribute code, feel free to open a pull request.
License
This project is licensed under the MIT License. See LICENSE-MIT or visit https://opensource.org/licenses/MIT for more information.
Dependencies
~12–24MB
~362K SLoC