Skip to main content

use_materials/
lib.rs

1#![forbid(unsafe_code)]
2//! Thin facade for the `use-materials` workspace.
3//!
4//! The crate reexports the focused material-property crates directly so
5//! consumers can opt into one dependency while still using the smaller APIs.
6//!
7//! # Examples
8//!
9//! ```rust
10//! use use_materials::*;
11//!
12//! let density = Density::new(7_850.0).unwrap();
13//! let stress = Stress::new(250_000_000.0).unwrap();
14//! let expansion = linear_expansion(2.0, 12.0e-6, 50.0).unwrap();
15//!
16//! assert_eq!(density.kg_per_m3(), 7_850.0);
17//! assert_eq!(stress.megapascals(), 250.0);
18//! assert!((expansion - 0.0012).abs() < 1.0e-12);
19//! ```
20
21pub use use_conductivity;
22pub use use_conductivity::*;
23pub use use_density;
24pub use use_density::*;
25pub use use_hardness;
26pub use use_hardness::*;
27pub use use_material_elasticity;
28pub use use_material_elasticity::*;
29pub use use_material_property;
30pub use use_material_property::*;
31pub use use_strain;
32pub use use_strain::*;
33pub use use_stress;
34pub use use_stress::*;
35pub use use_thermal_expansion;
36pub use use_thermal_expansion::*;
37
38#[cfg(test)]
39mod tests {
40    use super::{
41        Density, Hardness, HardnessScale, MaterialProperty, MaterialPropertyKind, Stress,
42        filter_by_kind, linear_expansion,
43    };
44
45    #[test]
46    fn facade_reexports_workspace_apis() {
47        let density = Density::new(7_850.0).unwrap();
48        assert_eq!(density.kg_per_m3(), 7_850.0);
49
50        let stress = Stress::new(250_000_000.0).unwrap();
51        assert_eq!(stress.megapascals(), 250.0);
52
53        let hardness = Hardness::new(200.0, HardnessScale::Vickers).unwrap();
54        assert_eq!(hardness.scale(), HardnessScale::Vickers);
55
56        let expansion = linear_expansion(2.0, 12.0e-6, 50.0).unwrap();
57        assert!((expansion - 0.0012).abs() < 1.0e-12);
58
59        let properties =
60            [MaterialProperty::new(MaterialPropertyKind::Density, 7_850.0, "kg/m^3").unwrap()];
61        assert_eq!(
62            filter_by_kind(&properties, MaterialPropertyKind::Density).len(),
63            1
64        );
65    }
66}