【unitrix】 1.5 Unitrix库结构和设计意图(lib.rs)
一、源码
这段代码是 Rust 库 Unitrix 的根模块文档和基础配置,表现了其结构和设计意图。
//! Unitrix: A dimensional analysis library with const-powered matrix transformations.
//! Unitrix: 基于常量化矩阵的带量纲分析计算库
//!
//! Provides compile-time unit checking and 2D geometric operations through:
//! 通过以下方式提供编译期单位检查和2D几何运算:
//! - Zero-cost physical quantity arithmetic
//! - 零开销的物理量算术运算
//! - Const-optimized matrix operations
//! - 常量优化的矩阵运算
//! - `no_std` compatible architecture
//! - 兼容`no_std`的架构设计
//!
//! # Core Features
//! # 核心特性
//! - **Type-safe units** with dimensional analysis
//! - **类型安全单位**(带量纲分析)
//! - **Const-native** calculations
//! - **原生常量**计算
//! - **Unit-preserving** 2D transforms
//! - **保持单位**的2D变换
//!
//! # Modules
//! # 模块说明
//! - [`quantity`] - Physical quantities with unit tracking
//! - [`quantity`] - 带单位追踪的物理量
//! - [`matrix`] - Unit-aware 2D transformations
//! - [`matrix`] - 单位感知的2D变换
//! - [`number`] - Numeric type foundations
//! - [`number`] - 数值类型基础#![no_std] // 不依赖标准库
#![forbid(unsafe_code)] // 禁止不安全代码,保证内存安全
// #![deny(missing_docs)] // 无条件使用注释文档
#![doc(html_root_url = "https://docs.rs/unitrix/0.0.5")] // 文档根URL
#![cfg_attr(docsrs, feature(doc_auto_cfg))] // 文档生成时的特性配置/// Sealed traits and internal implementation details
/// 密封trait和内部实现细节
#[allow(missing_docs)] // 显式豁免内部模块
pub(crate) mod sealed;/// Fundamental numeric types and operations
/// 基础数值类型和运算
pub mod number;/// Physical quantity implementation with unit tracking
/// 带单位追踪的物理量实现
pub mod quantity;// Unit-preserving 2D transformation matrices
/// 保持单位的2D变换矩阵
pub mod matrix;
二、解析
- 库定义与定位
//! Unitrix: A dimensional analysis library with const-powered matrix transformations.
//! Unitrix: 基于常量化矩阵的带量纲分析计算库
-
技术定位:专注于量纲分析(物理单位系统)和矩阵变换的数学库
-
核心创新:利用 Rust 的 类型级计算 特性实现编译期计算(const-powered)
- 核心能力
//! Provides compile-time unit checking and 2D geometric operations through:
//! 通过以下方式提供编译期单位检查和2D几何运算:
//! - Zero-cost physical quantity arithmetic
//! - 零开销的物理量算术运算
//! - Const-optimized matrix operations
//! - 常量优化的矩阵运算
//! - `no_std` compatible architecture
//! - 兼容`no_std`的架构设计
三大支柱:
-
零成本抽象:运行时无额外开销的单位计算
-
常量优化:矩阵运算在编译期预处理
-
嵌入式友好:支持无标准库环境(no_std)
-
关键特性
//! # Core Features
//! # 核心特性
//! - **Type-safe units** with dimensional analysis
//! - **类型安全单位**(带量纲分析)
//! - **Const-native** calculations
//! - **原生常量**计算
//! - **Unit-preserving** 2D transforms
//! - **保持单位**的2D变换
-
类型安全:通过 Rust 类型系统防止单位误用(如米≠秒)
-
常量原生:优先使用编译期计算
-
单位保持:几何变换不破坏物理量单位一致性
- 模块架构
//! # Modules
//! # 模块说明
//! - [`quantity`] - Physical quantities with unit tracking
//! - [`quantity`] - 带单位追踪的物理量
//! - [`matrix`] - Unit-aware 2D transformations
//! - [`matrix`] - 单位感知的2D变换
//! - [`number`] - Numeric type foundations
//! - [`number`] - 数值类型基础
-
quantity:物理量(长度/质量/时间等)的单位系统实现
-
matrix:支持单位传递的 2D 变换矩阵,统一2D几何计算
-
number:底层数值类型抽象(如定点数/浮点数),实现常量、变量混合计算
- 编译配置
#![no_std] // 不依赖标准库
#![forbid(unsafe_code)] // 禁止不安全代码,保证内存安全
#![doc(html_root_url = "https://docs.rs/unitrix/0.0.5")] // 文档根URL
#![cfg_attr(docsrs, feature(doc_auto_cfg))] // 文档生成时的特性配置
-
安全承诺:
-
no_std:可在嵌入式等受限环境运行
-
forbid(unsafe_code):保证内存安全
-
-
文档工具链:
-
自动生成 docs.rs 文档
-
启用自动特性标注(doc_auto_cfg)
-
- 模块设计
/// Sealed traits and internal implementation details
#[allow(missing_docs)]
pub(crate) mod sealed;pub mod number;
pub mod quantity;
pub mod matrix;
-
sealed:内部实现的密封模式(防止用户错误继承)
-
模块可见性:
-
核心模块为公开(pub)
-
内部细节显式豁免文档(allow(missing_docs))
-
三、设计哲学
-
类型驱动安全:通过类型系统保证单位正确性
-
编译期优先:最大限度利用类型系统性能
-
分层抽象:
-
底层:number 提供数值基础
-
中层:quantity 处理物理量
-
高层:matrix 实现几何变换
这种设计使得 Unitrix 既适合科学计算,也能用于嵌入式图形处理等场景。