当前位置: 首页 > 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"

相关文章:

  • JavaScript 到命令和控制 (C2) 服务器恶意软件分析及防御
  • Godhood ID——迈向去中心化AI情商生态系统的第一步
  • 单调栈算法精解(Java实现):从原理到高频面试题
  • 探秘数据中台:五大核心平台的功能全景解析
  • 封装axios,实现取消请求
  • 个人码支付免签系统三网免挂支付宝微信QQ钱包即时到账收款二维码聚合支付源码
  • 可视化图解算法33:判断是不是平衡二叉树
  • 告别异步复杂性?JDK 21 虚拟线程让高并发编程重回简单
  • I2C总线驱动开发:MPU6050应用
  • 《Python星球日记》 第36天:线性代数基础
  • 网站防护如何无惧 DDoS 攻击?
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据类型转换操作
  • 邂逅蓝耘元生代:ComfyUI 工作流与服务器虚拟化的诗意交织
  • 【coze】手册小助手(提示词、知识库、交互、发布)
  • 黑马点评day04(分布式锁-setnx)
  • AI数据分析中的伪需求场景:现状、挑战与突破路径
  • RAG_Techniques:探索GitHub热门RAG技术开源项目
  • MySQL的内置函数与复杂查询
  • HarmonyOS 5.0 分布式数据协同与跨设备同步​​
  • 数据分析汇报七步法:用结构化思维驱动决策
  • 纪念|“补白大王”郑逸梅,从藏扇看其眼光品味
  • 柳向春:关于美国国会图书馆所藏《全芳备祖》的一些故事
  • 谢承祥已任自然资源部总工程师
  • 商务部新闻发言人就中美经贸对话磋商情况答记者问
  • 澎湃读报丨解放日报8个版聚焦:牢记嘱托,砥砺奋进
  • 人民日报评论员:因势利导对经济布局进行调整优化