use derive_more::Display;
use fpdec::{Dec, Decimal};
use crate::types::errors::{Error, Result};
#[macro_export]
macro_rules! leverage {
( $a:literal ) => {{
use $crate::prelude::fpdec::Decimal;
$crate::prelude::Leverage::new($crate::prelude::fpdec::Dec!($a))
.expect("I have read the panic comment and know the leverage must be > 0.")
}};
}
#[derive(Default, Debug, Clone, Copy, PartialEq, Display, Eq)]
pub struct Leverage(Decimal);
impl Leverage {
pub fn new(val: Decimal) -> Result<Self> {
if val < Dec!(1) {
Err(Error::InvalidLeverage)?
}
Ok(Self(val))
}
}
impl AsRef<Decimal> for Leverage {
fn as_ref(&self) -> &Decimal {
&self.0
}
}