Learn how to use the high-performance Saros DLMM SDK for Rust with this complete example.
use saros_dlmm_sdk::DlmmClient;
use solana_sdk::pubkey::Pubkey;
use anyhow::Result;
#[tokio::main]
async fn main() -> Result<()> {
// Initialize the client
let client = DlmmClient::new("https://api.devnet.solana.com".to_string())?;
// Get all pools
let pools = client.get_all_pools().await?;
println!("Found {} pools", pools.len());
for pool in pools.iter().take(3) {
println!("Pool: {}, TVL: {}", pool.address, pool.tvl);
}
// Get a specific pool (using a placeholder address)
let pool_address = "EwsqJeioGAXE5EdZHj1QvcuvqgVhJDp9729H5wjh28DD".parse()?;
let pool = client.get_pool(pool_address).await?;
// Get a quote for a swap
let amount = 1_000_000u64; // 1 USDC (6 decimals)
let is_exact_input = true;
let swap_for_y = true;
let pair = pool_address;
let token_base = "C98A4nkJXhpVZNAZdHUA95RpTF3T4whtQubL3YobiUX9".parse()?;
let token_quote = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v".parse()?;
let token_base_decimal = 6;
let token_quote_decimal = 6;
let slippage = 0.5;
let quote = client.get_quote(
amount,
is_exact_input,
swap_for_y,
pair,
token_base,
token_quote,
token_base_decimal,
token_quote_decimal,
slippage
).await?;
println!("Quote: {:?}", quote);
// In a real application, you would then execute the swap
// let transaction = client.swap(...).await?;
Ok(())
}
This simulation demonstrates the expected behavior of the Rust DLMM SDK. In a real application, this would connect to the Solana network.
Click 'Run Rust DLMM Simulation' to see the output here...
The main client for interacting with DLMM pools and performing operations in Rust.
client.get_all_pools()
retrieves all available DLMM pools.
client.get_quote()
calculates the expected output for a swap.
The Rust SDK provides zero-cost abstractions and memory safety for high-performance DeFi applications.