rust_finprim/amort_dep_tax/
mod.rs1mod structs;
5pub use structs::{AmortizationPeriod, DepreciationPeriod};
6
7mod amort;
9#[cfg(feature = "std")]
10pub use amort::amort_schedule;
11pub use amort::amort_schedule_into;
12
13mod dep;
15#[cfg(feature = "std")]
16pub use dep::{db, macrs, sln, syd};
17pub use dep::{db_into, macrs_into, sln_into, syd_into};
18
19mod tax;
21pub use tax::{progressive_tax, progressive_tax_unchecked};
22
23#[cfg(feature = "serde")]
24#[cfg(test)]
25mod tests {
26 use super::*;
27
28 #[cfg(not(feature = "std"))]
29 extern crate std;
30 #[cfg(not(feature = "std"))]
31 use std::{assert, assert_eq, println, vec};
32
33 #[test]
34 fn test_serde() {
35 let period: AmortizationPeriod<f64> = AmortizationPeriod::new(1, 100.0, 50.0, 850.0);
36 let serialized = serde_json::to_string(&period).unwrap();
37 let deserialized: AmortizationPeriod<f64> = serde_json::from_str(&serialized).unwrap();
38 assert_eq!(period, deserialized);
39 let clone = period.clone();
40 assert_eq!(period, clone);
41
42 let dep_period: DepreciationPeriod<f64> = DepreciationPeriod::new(1, 100.0, 900.0);
43 let serialized = serde_json::to_string(&dep_period).unwrap();
44 let deserialized: DepreciationPeriod<f64> = serde_json::from_str(&serialized).unwrap();
45 assert_eq!(dep_period, deserialized);
46 let clone = dep_period.clone();
47 assert_eq!(dep_period, clone);
48 }
49}