castep_param_io/param/units/
mod.rs

1use super::KeywordDisplay;
2use castep_param_derive::ParamDisplay;
3use derive_builder::Builder;
4
5pub use energy_unit::EnergyUnit;
6pub use force_constant_unit::ForceConstantUnit;
7pub use force_unit::ForceUnit;
8pub use frequency_unit::FrequencyUnit;
9pub use inv_length_unit::InvLengthUnit;
10pub use length_unit::LengthUnit;
11pub use mass_unit::MassUnit;
12pub use pressure_unit::PressureUnit;
13pub use serde::{Deserialize, Serialize};
14pub use time_unit::TimeUnit;
15pub use velocity_unit::VelocityUnit;
16pub use volume_unit::VolumeUnit;
17
18mod energy_unit;
19mod force_constant_unit;
20mod force_unit;
21mod frequency_unit;
22mod inv_length_unit;
23mod length_unit;
24mod mass_unit;
25mod pressure_unit;
26mod time_unit;
27mod velocity_unit;
28mod volume_unit;
29
30#[derive(
31    Debug,
32    Clone,
33    Copy,
34    PartialEq,
35    Eq,
36    PartialOrd,
37    Ord,
38    Serialize,
39    Deserialize,
40    Default,
41    Hash,
42    Builder,
43    ParamDisplay,
44)]
45#[builder(setter(into, strip_option), default)]
46pub struct Units {
47    pub energy_unit: Option<EnergyUnit>,
48    pub force_unit: Option<ForceUnit>,
49    pub force_constant_unit: Option<ForceConstantUnit>,
50    pub frequency_unit: Option<FrequencyUnit>,
51    pub inv_length_unit: Option<InvLengthUnit>,
52    pub length_unit: Option<LengthUnit>,
53    pub mass_unit: Option<MassUnit>,
54    pub pressure_unit: Option<PressureUnit>,
55    pub time_unit: Option<TimeUnit>,
56    pub velocity_unit: Option<VelocityUnit>,
57    pub volume_unit: Option<VolumeUnit>,
58}
59
60#[cfg(test)]
61mod test {
62    use crate::param::units::{LengthUnit, UnitsBuilder};
63
64    #[test]
65    fn units() {
66        let unit = UnitsBuilder::default()
67            .length_unit(LengthUnit::Nanometer)
68            .build()
69            .unwrap();
70        println!("output: {}", unit);
71    }
72}