Struct Currency

Source
#[repr(C)]
pub struct Currency { pub code: Ustr, pub precision: u8, pub iso4217: u16, pub name: Ustr, pub currency_type: CurrencyType, }
Expand description

Represents a medium of exchange in a specified denomination with a fixed decimal precision.

Handles up to {FIXED_PRECISION} decimals of precision.

Fields§

§code: Ustr

The currency code as an alpha-3 string (e.g., “USD”, “EUR”).

§precision: u8

The currency decimal precision.

§iso4217: u16

The ISO 4217 currency code.

§name: Ustr

The full name of the currency.

§currency_type: CurrencyType

The currency type, indicating its category (e.g. Fiat, Crypto).

Implementations§

Source§

impl Currency

Source

pub fn AUD() -> Self

Source

pub fn BRL() -> Self

Source

pub fn CAD() -> Self

Source

pub fn CHF() -> Self

Source

pub fn CNY() -> Self

Source

pub fn CNH() -> Self

Source

pub fn CZK() -> Self

Source

pub fn DKK() -> Self

Source

pub fn EUR() -> Self

Source

pub fn GBP() -> Self

Source

pub fn HKD() -> Self

Source

pub fn HUF() -> Self

Source

pub fn ILS() -> Self

Source

pub fn INR() -> Self

Source

pub fn JPY() -> Self

Source

pub fn KRW() -> Self

Source

pub fn MXN() -> Self

Source

pub fn NOK() -> Self

Source

pub fn NZD() -> Self

Source

pub fn PLN() -> Self

Source

pub fn RUB() -> Self

Source

pub fn SAR() -> Self

Source

pub fn SEK() -> Self

Source

pub fn SGD() -> Self

Source

pub fn THB() -> Self

Source

pub fn TRY() -> Self

Source

pub fn TWD() -> Self

Source

pub fn USD() -> Self

Source

pub fn ZAR() -> Self

Source

pub fn XAG() -> Self

Source

pub fn XAU() -> Self

Source

pub fn XPT() -> Self

Source

pub fn ONEINCH() -> Self

Source

pub fn AAVE() -> Self

Source

pub fn ACA() -> Self

Source

pub fn ADA() -> Self

Source

pub fn AVAX() -> Self

Source

pub fn BCH() -> Self

Source

pub fn BTC() -> Self

Source

pub fn BTTC() -> Self

Source

pub fn BNB() -> Self

Source

pub fn BRZ() -> Self

Source

pub fn BSV() -> Self

Source

pub fn BUSD() -> Self

Source

pub fn CAKE() -> Self

Source

pub fn DASH() -> Self

Source

pub fn DOT() -> Self

Source

pub fn DOGE() -> Self

Source

pub fn EOS() -> Self

Source

pub fn ETH() -> Self

Source

pub fn ETHW() -> Self

Source

pub fn FDUSD() -> Self

Source

pub fn JOE() -> Self

Source

pub fn LTC() -> Self

Source

pub fn LUNA() -> Self

Source

pub fn NBT() -> Self

Source

pub fn SOL() -> Self

Source

pub fn SHIB() -> Self

Source

pub fn TRX() -> Self

Source

pub fn TRYB() -> Self

Source

pub fn TUSD() -> Self

Source

pub fn VTC() -> Self

Source

pub fn WSB() -> Self

Source

pub fn XBT() -> Self

Source

pub fn XEC() -> Self

Source

pub fn XLM() -> Self

Source

pub fn XMR() -> Self

Source

pub fn USDT() -> Self

Source

pub fn XRP() -> Self

Source

pub fn XTZ() -> Self

Source

pub fn USDC() -> Self

Source

pub fn USDC_POS() -> Self

Source

pub fn USDP() -> Self

Source

pub fn ZEC() -> Self

Source§

impl Currency

Source

pub fn new_checked<T: AsRef<str>>( code: T, precision: u8, iso4217: u16, name: T, currency_type: CurrencyType, ) -> Result<Self>

Creates a new Currency instance with correctness checking.

§Errors

Returns an error if:

  • code is not a valid string.
  • name is the empty string.
  • precision is invalid outside the valid representable range [0, {FIXED_PRECISION}].
§Notes

PyO3 requires a Result type for proper error handling and stacktrace printing in Python.

Source

pub fn new<T: AsRef<str>>( code: T, precision: u8, iso4217: u16, name: T, currency_type: CurrencyType, ) -> Self

Creates a new Currency instance.

§Panics

Panics if a correctness check fails. See Currency::new_checked for more details.

Source

pub fn register(currency: Self, overwrite: bool) -> Result<()>

Register the given currency in the internal currency map.

  • If overwrite is true, any existing currency will be replaced.
  • If overwrite is false and the currency already exists, the operation is a no-op.
§Errors

Returns an error if there is a failure acquiring the lock on the currency map.

Source

pub fn try_from_str(s: &str) -> Option<Self>

Attempts to parse a Currency from a string, returning None if not found.

Source

pub fn is_fiat(code: &str) -> Result<bool>

Checks if the currency identified by the given code is a fiat currency.

§Errors

Returns an error if:

  • A currency with the given code does not exist.
  • There is a failure acquiring the lock on the currency map.
Source

pub fn is_crypto(code: &str) -> Result<bool>

Checks if the currency identified by the given code is a cryptocurrency.

§Errors

Returns an error if:

  • If a currency with the given code does not exist.
  • If there is a failure acquiring the lock on the currency map.
Source

pub fn is_commodity_backed(code: &str) -> Result<bool>

Checks if the currency identified by the given code is a commodity (such as a precious metal).

§Errors

Returns an error if:

  • A currency with the given code does not exist.
  • There is a failure acquiring the lock on the currency map.

Trait Implementations§

Source§

impl Clone for Currency

Source§

fn clone(&self) -> Currency

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Currency

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Currency

Source§

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 Display for Currency

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: AsRef<str>> From<T> for Currency

Source§

fn from(value: T) -> Self

Converts to this type from the input type.
Source§

impl FromStr for Currency

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for Currency

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoPy<Py<PyAny>> for Currency

Source§

fn into_py(self, py: Python<'_>) -> PyObject

👎Deprecated since 0.23.0: IntoPy is going to be replaced by IntoPyObject. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
Performs the conversion.
Source§

impl<'py> IntoPyObject<'py> for Currency

Source§

type Target = Currency

The Python output type
Source§

type Output = Bound<'py, <Currency as IntoPyObject<'py>>::Target>

The smart pointer type to use. Read more
Source§

type Error = PyErr

The type returned in the event of a conversion error.
Source§

fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>

Performs the conversion.
Source§

impl PartialEq for Currency

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PyClass for Currency

Source§

type Frozen = False

Whether the pyclass is frozen. Read more
Source§

impl PyClassImpl for Currency

Source§

const IS_BASETYPE: bool = false

#[pyclass(subclass)]
Source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
Source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
Source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
Source§

type BaseType = PyAny

Base class
Source§

type ThreadChecker = SendablePyClass<Currency>

This handles following two situations: Read more
Source§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild

Immutable or mutable
Source§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
Source§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
Source§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
Source§

fn items_iter() -> PyClassItemsIter

Source§

fn doc(py: Python<'_>) -> PyResult<&'static CStr>

Rendered class doc
Source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

§

fn dict_offset() -> Option<isize>

§

fn weaklist_offset() -> Option<isize>

Source§

impl PyClassNewTextSignature<Currency> for PyClassImplCollector<Currency>

Source§

fn new_text_signature(self) -> Option<&'static str>

Source§

impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a Currency

Source§

type Holder = Option<PyRef<'py, Currency>>

Source§

fn extract( obj: &'a Bound<'py, PyAny>, holder: &'a mut Self::Holder, ) -> PyResult<Self>

Source§

impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut Currency

Source§

type Holder = Option<PyRefMut<'py, Currency>>

Source§

fn extract( obj: &'a Bound<'py, PyAny>, holder: &'a mut Self::Holder, ) -> PyResult<Self>

Source§

impl PyMethods<Currency> for PyClassImplCollector<Currency>

Source§

fn py_methods(self) -> &'static PyClassItems

Source§

impl PyTypeInfo for Currency

Source§

const NAME: &'static str = "Currency"

Class name.
Source§

const MODULE: Option<&'static str>

Module name, if any.
Source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
§

fn type_object(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
§

fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>

👎Deprecated since 0.23.0: renamed to PyTypeInfo::type_object
Deprecated name for [PyTypeInfo::type_object].
§

fn is_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
§

fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool

👎Deprecated since 0.23.0: renamed to PyTypeInfo::is_type_of
Deprecated name for [PyTypeInfo::is_type_of].
§

fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.
§

fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool

👎Deprecated since 0.23.0: renamed to PyTypeInfo::is_exact_type_of
Deprecated name for [PyTypeInfo::is_exact_type_of].
Source§

impl Serialize for Currency

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for Currency

Source§

impl DerefToPyAny for Currency

Source§

impl Eq for Currency

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromPyObject<'_> for T
where T: PyClass + Clone,

§

fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>

Extracts Self from the bound smart pointer obj. Read more
§

impl<'py, T> FromPyObjectBound<'_, 'py> for T
where T: FromPyObject<'py>,

§

fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>

Extracts Self from the bound smart pointer obj. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<'py, T> IntoPyObjectExt<'py> for T
where T: IntoPyObject<'py>,

§

fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>

Converts self into an owned Python object, dropping type information.
§

fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>

Converts self into an owned Python object, dropping type information and unbinding it from the 'py lifetime.
§

fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>

Converts self into a Python object. Read more
Source§

impl<'py, T> IntoPyObjectNautilusExt<'py> for T
where T: IntoPyObjectExt<'py>,

Source§

fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>

§

impl<T> PyErrArguments for T
where T: for<'py> IntoPyObject<'py> + Send + Sync,

§

fn arguments(self, py: Python<'_>) -> Py<PyAny>

Arguments for exception
§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

§

const NAME: &'static str = <T as PyTypeInfo>::NAME

Name of self. This is used in error messages, for example.
§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
Source§

impl<T> Separable for T
where T: Display,

Source§

fn separate_by_policy(&self, policy: SeparatorPolicy<'_>) -> String

Adds separators according to the given SeparatorPolicy. Read more
Source§

fn separate_with_commas(&self) -> String

Inserts a comma every three digits from the right. Read more
Source§

fn separate_with_spaces(&self) -> String

Inserts a space every three digits from the right. Read more
Source§

fn separate_with_dots(&self) -> String

Inserts a period every three digits from the right. Read more
Source§

fn separate_with_underscores(&self) -> String

Inserts an underscore every three digits from the right. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> Ungil for T
where T: Send,