#unit #unit-system #derive #f64 #self

unit_system_derive

unit_system crate的Proc_macro推导

1个不稳定版本

0.1.0 2022年1月28日

#9#unit-system


unit_system 中使用

MIT/Apache

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