pub trait OdosRouterSelection: OdosChain {
// Provided methods
fn recommended_router_address(&self) -> OdosChainResult<Address> { ... }
fn router_address_with_fallback(&self) -> OdosChainResult<Address> { ... }
fn router_address_by_preference(
&self,
prefer_v3: bool,
) -> OdosChainResult<Address> { ... }
}Expand description
Extension trait for easy router selection
This trait provides convenient methods for choosing between V2 and V3 routers based on your requirements.
Provided Methods§
Sourcefn recommended_router_address(&self) -> OdosChainResult<Address>
fn recommended_router_address(&self) -> OdosChainResult<Address>
Get the recommended router address for this chain
Currently defaults to V3 for enhanced features, but this may change based on performance characteristics.
§Returns
Ok(Address)- The recommended router addressErr(OdosChainError)- If the chain is not supported
§Example
use odos_sdk::{OdosChain, OdosRouterSelection};
use alloy_chains::NamedChain;
let address = NamedChain::Base.recommended_router_address()?;Sourcefn router_address_with_fallback(&self) -> OdosChainResult<Address>
fn router_address_with_fallback(&self) -> OdosChainResult<Address>
Get router address with fallback strategy
Tries V3 first, falls back to V2 if needed. This is useful for maximum compatibility.
§Returns
Ok(Address)- V3 address if available, otherwise V2 addressErr(OdosChainError)- If neither version is supported
§Example
use odos_sdk::{OdosChain, OdosRouterSelection};
use alloy_chains::NamedChain;
let address = NamedChain::Mainnet.router_address_with_fallback()?;Sourcefn router_address_by_preference(
&self,
prefer_v3: bool,
) -> OdosChainResult<Address>
fn router_address_by_preference( &self, prefer_v3: bool, ) -> OdosChainResult<Address>
Get router address based on preference
§Arguments
prefer_v3- Whether to prefer V3 when both are available
§Returns
Ok(Address)- The appropriate router address based on preferenceErr(OdosChainError)- If the preferred version is not supported
§Example
use odos_sdk::{OdosChain, OdosRouterSelection};
use alloy_chains::NamedChain;
let v3_address = NamedChain::Mainnet.router_address_by_preference(true)?;
let v2_address = NamedChain::Mainnet.router_address_by_preference(false)?;