【quantity】0 README.md文件
PhysUnits · 物理单位库
Type-safe physical quantities with dimensional analysis
带量纲分析的类型安全物理量库
A Rust library for safe unit operations /
Rust实现的类型安全单位计算库
Core Design / 核心设计
1. Dimension / 量纲
/// Base SI dimensions / 国际单位制基本量纲
pub struct Dimension<L: Integer, // Length (m) / 长度(米)M: Integer, // Mass (kg) / 质量(千克)T: Integer, // Time (s) / 时间(秒)I: Integer, // Current (A) / 电流(安培)Th: Integer, // Temperature (K) / 温度(开尔文) N: Integer, // Amount (mol) / 物质的量(摩尔)J: Integer // Luminosity (cd) / 发光强度(坎德拉)
>(PhantomData<(L, M, T, I, Th, N, J)>);
2. Unit / 单位
/// Unit conversion rules / 单位转换规则
pub trait Unit {type Dimension;/// Convert to base unit / 转换到基准单位fn to_base(value: f64) -> f64;/// Unit symbol / 单位符号const SYMBOL: &'static str;
}
3. Quantity / 物理量
/// Physical quantity with value and unit / 带单位和值的物理量
pub struct Quantity<V, U: Unit> {/// Scalar value / 标量值pub value: V,_unit: PhantomData<U>
}impl<V, U: Unit> Quantity<V, U> {/// Create new quantity / 创建新物理量pub fn new(value: V) -> Self {Self { value, _unit: PhantomData }}
}
Usage / 使用示例
Basic Conversion / 基础转换
use physunits::{Meter, Inch, Quantity};// Create length / 创建长度
let length = Quantity::<f64, Meter>::new(2.0);// Convert units / 单位转换
let inches = length.convert::<Inch>();
println!("{} m = {} in", length.value, inches.value);
Temperature / 温度转换
use physunits::{Celsius, Fahrenheit};let boiling = Quantity::<f64, Celsius>::new(100.0);
let fahr = boiling.convert::<Fahrenheit>();
println!("Water boils at {} °F", fahr.value);
Force Calculation / 力的计算
use physunits::{kg, m, s, N};let mass = 5.0 * kg;
let acceleration = 9.8 * m / (s * s);
let force: Quantity<f64, N> = mass * acceleration;
println!("Force: {} N", force.value);
Features / 特性
Feature | 功能描述 |
---|---|
📏 Compile-time dimensional safety | 编译期量纲安全 |
⚡ Zero runtime overhead | 零运行时开销 |
🔢 Integer & float support | 支持整数和浮点数 |
🔄 Automatic unit conversion | 自动单位转换 |
Installation / 安装
[dependencies]
physunits = "0.0.1"