1个不稳定版本
0.1.0 | 2022年1月28日 |
---|
#9 在 #unit-system
在 unit_system 中使用
8KB
158 代码行
unit_system_derive
为 unit_system
crate中的 Unit
实现Proc_macro推导。
它为结构体 B 实现了 Unit
,并声明了结构体,这些结构体也实现了 Unit
并且其 BaseUnit
是初始结构体 B。它们构成了一个典型的SI单位系统。大致上,
#[derive(Unit)]
struct B(f64);
结果为
// The base unit is its own `BaseUnit`
impl Unit for B {
type BaseUnit = Self;
fn to_base(self) -> Self {
self
}
fn from_base(base: B) -> Self {
base
}
}
struct NB(f64);
struct MuB(f64);
struct MB(f64);
struct CB(f64);
struct DeciB(f64);
struct HB(f64);
struct KB(f64);
/// kiloB is 1000 B
impl Unit for KB {
type BaseUnit = B;
fn to_base(self) -> B {
B(self * 1000.)
}
fn from_base(base: Self::BaseUnit) -> Self {
Self(base / 1000.)
}
}
// ...the same for the rest of units
依赖项
~1.5MB
~36K SLoC