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

#1 in #stellar

Download history 84/week @ 2024-07-19 47/week @ 2024-07-26 4/week @ 2024-08-02 10/week @ 2024-08-30 192/week @ 2024-09-06 228/week @ 2024-09-13 71/week @ 2024-09-20 71/week @ 2024-09-27 77/week @ 2024-10-04

481 downloads per month

MIT license

615KB
8K SLoC

Stellar-rs - Empowering Stellar Developers with Rust's Performance and Security

GitHub Workflow Status Crates.io Documentation GitHub Issues GitHub Stars GitHub License

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:

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–23MB
~362K SLoC