castep_param_io/param/units/
mod.rs1use 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}