当前位置: 首页 > news >正文

【PhysUnits】17.7 readme.md更新

physunits · 物理单位库

Type-safe physical quantities with dimensional analysis
带量纲分析的类型安全物理量库

A Rust library for safe unit operations /
Rust实现的类型安全单位计算库

Key Advantages / 核心优势

  1. No dependencies - Pure Rust implementation without external dependencies
    无依赖库 - 纯Rust实现,不依赖任何外部库

  2. Typenum-like constant calculation - Full compile-time dimensional analysis with constant evaluation capabilities
    类Typenum的常量计算 - 完整的编译期量纲分析与常量计算能力

  3. Var structure bridge - Seamless integration between variable and constant calculations
    Var结构桥接 - 完美衔接变量与常量的混合计算

  4. Complete operator overloading - Supports all arithmetic operations with dimensional correctness
    完整运算符重载 - 支持所有算术运算并保持量纲正确性

Core Architecture / 核心架构

1. Constant System / 常量系统

// 基础常量类型
pub struct B0<H>(PhantomData<H>);  // 二进制0节点
pub struct B1<H>(PhantomData<H>);  // 二进制1节点
pub struct Z0;                     // 零值
pub struct P1;                     // +1
pub struct N1;                     // -1// 常量运算特性
pub trait Integer: Default + Sealed + Copy {fn to_i32() -> i32;  // 常量值转换
}// 示例实现
impl Integer for P1 {fn to_i32() -> i32 { 1 }
}### 2. Var Structure / 变量结构
```rust
/// 变量结构体,桥接常量与变量计算
#[derive(Debug, Clone, Copy)]
pub struct Var<T: Numeric>(pub T);// 支持的运算类型
impl<T: Numeric> Add for Var<T> {type Output = Self;fn add(self, b: Self) -> Self {Var(self.0 + b.0)}
}// 与常量的混合运算
impl<T: Numeric, C: Integer> Add<C> for Var<T> {type Output = C::Output;fn add(self, c: C) -> Self::Output {c + self  // 调用常量的加法实现}
}

3. Dimension System / 量纲系统

/// 国际单位制7大量纲
pub struct Dimension<METER: Integer,     // 长度KILOGRAM: Integer,  // 质量SECOND: Integer,    // 时间AMPERE: Integer,    // 电流KELVIN: Integer,    // 温度MOLE: Integer,      // 物质的量CANDELA: Integer    // 发光强度
>(PhantomData<(METER, KILOGRAM, SECOND, AMPERE, KELVIN, MOLE, CANDELA)>);// 量纲运算示例
impl<M1, M2, KG1, KG2> Mul<Dimension<M2, KG2>> for Dimension<M1, KG1> {type Output = Dimension<Sum<M1, M2>, Sum<KG1, KG2>>;fn mul(self, _: Dimension<M2, KG2>) -> Self::Output {Dimension::new()  // 量纲指数相加}
}

4. Unit System / 单位系统

/// SI基础单位结构
pub struct Si<Value: Scalar, D: Dimensional, Pr: Prefixed>(pub Value,PhantomData<(D, Pr)>
);/// 复合单位结构
pub struct Unit<S: Sied, R: Scaled>(pub S, PhantomData<R>);// 单位运算示例
impl<V, D1, D2> Mul<Si<V, D2>> for Si<V, D1> {type Output = Si<V, Prod<D1, D2>>;fn mul(self, rhs: Si<V, D2>) -> Self::Output {Si(self.0 * rhs.0, PhantomData)}
}

Features / 特性

Feature功能描述
📏 Compile-time dimensional safety编译期量纲安全
⚡ Zero runtime overhead零运行时开销
🔢 Integer & float support支持整数和浮点数
🔄 Automatic unit conversion自动单位转换
🏷️ Runtime prefix handling运行时词头处理
🧮 Typenum-like constant math类Typenum的常量计算
🌉 Var-based mixed calculation基于Var的混合计算
🔧 Full operator overloading完整运算符重载

Usage Examples / 使用示例

Basic Operations / 基础运算

use physunits::{m, kg, s, N};// 常量计算
let force = const5* kg * const(9) * m / (s * s);
println!("Force: {} N", force.value());// 变量计算
let mass = Var(5.0) * N;
let acceleration = Var(9.0);
let force = mass * acceleration;

Mixed Calculation / 混合计算

use physunits::{consts::*, Var};// 编译时常量与运行时变量混合运算
let G = Const(6) * m3 / (kg * s * s);
let m1 = Var(5.972e24);  // 地球质量 (kg)
let m2 = Var(7.342e22);  // 月球质量 (kg)
let r = Var(3.844e8);    // 地月距离 (m)let f = G * m1 * m2 / (r * r);
println!("Gravitational force: {} N", f.value());

Temperature Conversion / 温度转换

use physunits::{Celsius, Fahrenheit};let boiling = quantity::Si::<f64, Celsius>::new(100.0);
let fahr = boiling.convert::<Fahrenheit>();
println!("Water boils at {} °F", fahr.value()); 

Unit Math / 单位运算

let speed = 60.0 * km / h;
let time = 30.0 * min;
let distance = speed * time;  // 自动推导为km单位

Advanced Features / 高级特性

  1. 常量计算系统
  • 二进制编码的常量类型 (B0, B1)

  • 基础常量值 (Z0, P1, N1)

  • 支持所有算术运算的trait实现

  • 常量到运行时的值转换 (to_i32())

  1. Var结构桥接
  • 同时支持变量与常量的运算

  • 自动类型转换系统

  • 完整的运算符重载 (+, -, *, /, +=, -=, *=, /=)

  • 支持i64和f64基础类型

  1. 量纲系统
  • 7大基本量纲的编译期检查

  • 量纲运算自动推导

  • 支持幂运算 (pow()方法)

  • 零开销抽象

Comparison / 对比

FeaturePhysUnitsuomnalgebra
Dim Safety
Integer Support⚠️
Runtime Prefix
No Deps
Const Math⚠️
Var Bridge
特性PhysUnitsuomnalgebra
量纲安全
整数支持⚠️
运行时词头
无依赖
常量计算⚠️
变量桥接

Installation / 安装

[dependencies]
physunits = "0.0.4"

Contributing / 贡献指南

We welcome issues and PRs! / 欢迎提交 Issue 和 PR!

Key needs: / 重点需求:

  • More unit definitions / 更多单位定义

  • Real-world physics test cases / 实际物理测试案例

  • Better error messages / 更好的错误提示

  • Constant calculation optimization / 常量计算优化

  • WASM compatibility / WASM兼容性

http://www.xdnf.cn/news/979147.html

相关文章:

  • 从代码学习深度强学习 - Dyna-Q 算法 PyTorch版
  • Android Gson工具类
  • 免下载苹果 IPA 文件重签名工具:快速更换应用名称和 BID的教程
  • xcode中project.pbxproj点开为空白问题
  • Linux Swap分区应该禁用吗?深入辨析其作用与性能优化
  • Spring @Qualifier,@Primary
  • 接收rabbitmq消息
  • 记录下three.js学习过程中不理解问题----材质(material)⑤
  • 在前端元素中,点击当前元素,但是却选中其他元素的文字的问题
  • Cesium圆锥渐变色实现:融合顶点着色器、Canvas动态贴图与静态纹理的多方案整合
  • 深度剖析:UI 设计怎样为小程序构建极致轻量体验
  • 在 Windows 上安装和配置 Redis 及可视化工具指南
  • C#接口代码记录
  • 物联网基础概述【一】
  • 容器化部署案例一wordpress
  • 递归法解N叉树的后序遍历
  • 若依微服务Openfeign接口调用超时问题
  • Java面向对象编程(OOP)深度学习解析
  • Flutter布局系统全面解析:从基础组件到复杂界面构建
  • ttyd:安全地通过网络共享您的 Linux 终端
  • Cpp 知识3
  • github action推送-构建准备步骤获取私有dockerhub镜像仓库镜像的一系列错误尝试
  • Solidity 开发从入门到精通:语法特性与实战指南
  • 在Linux下使用vscode使用交叉编译工具链的gdb对core文件进行堆栈、变量查看
  • Ubuntu下编译安装DLib的GPU版本并实现人脸检测和人脸关键点检测
  • “十五五”时期智慧城市赋能全国一体化数据市场建设:战略路径与政策建议[ 注:本建议基于公开政策文件与行业实践研究,数据引用截至2025年6月11日。]
  • 商品中心—3.商品可采可补可售的技术文档下
  • 前端面试宝典---事件循环面试题
  • 小白学Pinia状态管理
  • STM32G DMA串口发送接收