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

【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"
http://www.xdnf.cn/news/299197.html

相关文章:

  • Linux服务之nginx中高级配置
  • C++笔记-二叉搜索树(包括key,key/value搜索场景等)
  • 一个基于Netty和WebRTC的实时通讯系统
  • 大数据应用开发和项目实战-电商双11美妆数据分析
  • LangChain入门(六)Agent
  • 演讲学习的总结
  • CentOS虚拟机固定ip以及出现的问题
  • 极狐Gitlab 里程碑功能介绍
  • 如何监控Kafka的Lag(消费延迟)?
  • 如何使用 QuickAPI 推动汽车行业数据分享:数据仓库场景下的实践
  • SQL Server 备份加密和解密还原
  • Linux 系统上安装 Firefox 浏览器的完整指南
  • [人机交互]理解用户
  • 简单介绍分布式定时任务XXL-JOB
  • 大数据产品销售数据分析:基于Python机器学习产品销售数据爬虫可视化分析预测系统设计与实现
  • 数据分析汇报七步法:用结构化思维驱动决策
  • OrangePi Zero 3学习笔记(Android篇)1 - 搭建环境
  • 第三节:Vben Admin 最新 v5.0 对接后端登录接口(下)
  • 【愚公系列】《Manus极简入门》022-艺术创作顾问:“艺术灵感使者”
  • Vue3路由模式为history,使用nginx部署上线后刷新404的问题
  • 【IP101】图像特征提取技术:从传统方法到深度学习的完整指南
  • R 语言科研绘图第 45 期 --- 桑基图-和弦
  • Factorio 异星工厂 [DLC 解锁] [Steam] [Windows SteamOS]
  • JAVA SE(9)——多态
  • Axure疑难杂症:深度理解与认识“事件”“动作”(玩转交互)
  • 数据中台产品功能介绍
  • Rice Science∣武汉大学水稻研究团队发现水稻壁相关激酶OsWAKg16和OsWAKg52同时调控水稻抗病性和产量
  • CSS中的@import指令
  • 深入解析二维矩阵搜索:LeetCode 74与240题的两种高效解法对比
  • 【C++游戏引擎开发】第31篇:物理引擎(Bullet)—碰撞检测系统