rateslib/fx/rates/
fxrate.rs1use crate::dual::Number;
2use crate::fx::rates::fxpair::FXPair;
3use chrono::NaiveDateTime;
4use pyo3::{pyclass, PyErr};
5use serde::{Deserialize, Serialize};
6
7#[pyclass(module = "rateslib.rs")]
9#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
10pub struct FXRate {
11 pub(crate) pair: FXPair,
12 pub(crate) rate: Number,
13 pub(crate) settlement: Option<NaiveDateTime>,
14}
15
16impl FXRate {
17 pub fn try_new(
18 lhs: &str,
19 rhs: &str,
20 rate: Number,
21 settlement: Option<NaiveDateTime>,
22 ) -> Result<Self, PyErr> {
23 Ok(FXRate {
24 pair: FXPair::try_new(lhs, rhs)?,
25 rate,
26 settlement,
27 })
28 }
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn fxrate_creation() {
37 FXRate::try_new("usd", "eur", Number::F64(1.20), None).unwrap();
38 }
39}