pub struct Slippage(/* private fields */);Expand description
Type-safe slippage percentage with validation
Ensures slippage values are within valid ranges and provides convenient constructors for both percentage and basis point representations.
§Examples
use odos_sdk::Slippage;
// Create from percentage (0.5% slippage)
let slippage = Slippage::percent(0.5)?;
assert_eq!(slippage.as_percent(), 0.5);
// Create from basis points (50 bps = 0.5%)
let slippage = Slippage::bps(50)?;
assert_eq!(slippage.as_percent(), 0.5);
assert_eq!(slippage.as_bps(), 50);
// Validation prevents invalid values
assert!(Slippage::percent(150.0).is_err()); // > 100%
assert!(Slippage::percent(-1.0).is_err()); // < 0%
assert!(Slippage::bps(15000).is_err()); // > 10000 bpsImplementations§
Source§impl Slippage
impl Slippage
Sourcepub fn percent(percent: f64) -> Result<Self, String>
pub fn percent(percent: f64) -> Result<Self, String>
Create slippage from percentage value
§Arguments
percent- Slippage as percentage (e.g., 0.5 for 0.5%, 1.0 for 1%)
§Returns
Ok(Slippage)- Valid slippage valueErr(String)- If percentage is < 0 or > 100
§Examples
use odos_sdk::Slippage;
let slippage = Slippage::percent(0.5)?; // 0.5%
assert_eq!(slippage.as_percent(), 0.5);
let slippage = Slippage::percent(1.0)?; // 1%
assert_eq!(slippage.as_percent(), 1.0);
// Validation
assert!(Slippage::percent(150.0).is_err());
assert!(Slippage::percent(-0.1).is_err());Sourcepub fn bps(bps: u16) -> Result<Self, String>
pub fn bps(bps: u16) -> Result<Self, String>
Create slippage from basis points
§Arguments
bps- Slippage in basis points (e.g., 50 for 0.5%, 100 for 1%)
§Returns
Ok(Slippage)- Valid slippage valueErr(String)- If basis points > 10000 (100%)
§Examples
use odos_sdk::Slippage;
let slippage = Slippage::bps(50)?; // 50 bps = 0.5%
assert_eq!(slippage.as_bps(), 50);
assert_eq!(slippage.as_percent(), 0.5);
let slippage = Slippage::bps(100)?; // 100 bps = 1%
assert_eq!(slippage.as_bps(), 100);
assert_eq!(slippage.as_percent(), 1.0);
// Validation
assert!(Slippage::bps(15000).is_err());Sourcepub fn as_percent(&self) -> f64
pub fn as_percent(&self) -> f64
Get slippage value as percentage
§Examples
use odos_sdk::Slippage;
let slippage = Slippage::percent(0.5)?;
assert_eq!(slippage.as_percent(), 0.5);Trait Implementations§
Source§impl<'de> Deserialize<'de> for Slippage
impl<'de> Deserialize<'de> for Slippage
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialOrd for Slippage
impl PartialOrd for Slippage
impl Copy for Slippage
impl StructuralPartialEq for Slippage
Auto Trait Implementations§
impl Freeze for Slippage
impl RefUnwindSafe for Slippage
impl Send for Slippage
impl Sync for Slippage
impl Unpin for Slippage
impl UnwindSafe for Slippage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.