- 博客(286)
- 收藏
- 关注
原创 【PhysUnits】3 量纲接口实现解析(dimensional.rs)
这个 trait 是物理单位库的类型系统基础之一,与 Dimension 结构体配合使用,共同确保物理量计算的类型安全性。它为库的其他功能(如单位转换、量纲检查等)提供了基础类型约束能力。这段代码定义了一个名为 Dimensional 的标记 trait(标记接口),用于标识合法的物理量维度类型。每个类型参数(M/KG/S/A/K/MOL/CD)都必须实现 Integer trait。Sized 约束确保实现该 trait 的类型在编译时大小已知。类型安全:通过 trait 系统限制非法类型的使用。
2025-05-08 18:08:41
246
原创 【PhysUnits】2 SI 量纲 实现解析(prefix.rs)
示例:速度(m/s) × 时间(s) = 距离(m) → P1 + Z0 = P1 (米), N1 + P1 = Z0 (秒)示例:距离(m) ÷ 时间(s) = 速度(m/s) → P1 - Z0 = P1 (米), Z0 - P1 = N1 (秒)安培(AMPERE)、开尔文(KELVIN)、摩尔(MOLE)、坎德拉(CANDELA)复合单位:验证 kg * (m/(s*s)) 得到 kg·m/s² (力/牛顿)1.单位乘法:验证 m * (s/s²) 得到 m/s (速度)
2025-05-08 17:41:46
315
原创 【PhysUnits】2.2 Scalar<T> 标量元组结构体(scalar/mod.rs)
这段代码定义了一个通用的有符号整数(Signed Integer)抽象系统。
2025-05-07 22:53:29
165
原创 【PhysUnits】2 Scalar<T> 标量元组结构体(scalar/mod.rs)
whereT: FixedPoint, // 自定义trait。
2025-05-07 21:22:42
320
原创 【PhysUnits】1 SI Prefixes 实现解析(prefix.rs)
/ 正词头// 10³// 10⁶// 负词头// 10⁻³// 10⁻⁶。
2025-05-06 21:35:06
499
原创 【libm】2整数接口(int_traits.rs)
这段代码是数学库的基础设施,通过 trait 和宏实现了:整数类型的通用操作抽象。安全且高效的类型转换。宽/窄整数的互操作。为上层算法(如浮点数解析、大数运算)提供了类型安全的底层支持。
2025-05-05 12:01:32
375
原创 【libm】1实数接口(float_traits.rs)
这段代码是 Rust 数学库的核心部分,通过 trait 和宏实现了浮点数的通用操作,支持从 f16 到 f128 的多种类型,同时确保高性能和类型安全。
2025-05-05 04:35:23
786
原创 【libm】0库入口文件(lib.rs)
纯 Rust 实现:不依赖 std,适合嵌入式或无 OS 环境。条件编译:支持 WASM、f16/f128 等实验性功能。数学函数:核心逻辑在 math 模块中实现(如 sin、exp)。安全优先:严格限制 unsafe 的使用。
2025-05-05 04:22:01
573
原创 【quantity】11 体积单位模块(volume.rs)
我们实现 volume.rs 文件,包含 d(分,deci)、c(厘,centi)、m(毫,milli) 前缀的体积单位。体积的基本单位是 立方米(CubicMeter),而常用的衍生单位包括 升(Liter)(即立方分米)。
2025-05-04 17:07:22
254
原创 【quantity】10 面积单位模块(area.rs)
我们可以实现面积单位文件,包含k(千)、d(分)、c(厘)、m(毫)前缀的面积量。面积的基本单位是平方米(SquareMeter)。根据SI前缀,k代表千(kilo),d代表分(deci),c代表厘(centi),m代表毫(milli)如果需要更完整的实现,可能还需要在相应的模块中定义SquareMeter类型和相关的转换关系。这个实现假设已经存在SquareMeter单位类型和相应的前缀类型。面积单位是长度的平方,所以前缀也是平方关系。
2025-05-04 16:58:17
181
原创 【uom】 2.2 quantity! 宏主匹配项输出代码(quantity.rs)
作用:创建一个临时模块 __system,用于访问父模块中的类型(避免命名冲突)。说明:通过 pub use super::super:😗 导入祖父模块的所有内容,使得宏可以访问外部定义的系统类型(如 ISQ)。量纲类型(Dimension))>;作用:定义物理量的量纲类型。$system:量纲系统(如 ISQ)。:各基本量的幂次(如 P1, Z0, Z0 表示长度的一次方,质量和时间的零次方)。quantity!:处理可选的 kind 参数(见之前解释)。物理量类型(Quantity)
2025-05-04 13:22:14
386
原创 【quantity】9 长度单位模块(length.rs)
使用了Quantity<V, P, Meter>作为基础类型,表示一个带有值类型V、前缀P和单位Meter的量。代码是用Rust语言定义的一组长度单位类型,利用了泛型和类型别名来创建带不同SI前缀的长度量。Length<V, P = NoPrefix>:通用长度类型,默认无前缀(NoPrefix)。Centimeters:厘米(centi-前缀,10⁻²倍)Millimeters:毫米(milli-前缀,10⁻³倍)Nanometers:纳米(nano-前缀,10⁻⁹倍)P是SI前缀(默认为无前缀)
2025-05-03 20:29:27
519
原创 【quantity】7 角度单位模块(angle.rs)
代码定义了一个用于处理不同角度单位的Rust模块,支持弧度(radians)、度(degrees)和哥恩(gradians/gons)之间的转换,以及带SI前缀的弧度单位(如毫弧度、微弧度)。
2025-05-03 20:18:39
385
原创 【quantity】6 温度单位实现(temperature.rs)
// 带SI前缀的通用温度/// 开尔文温度Temperature 是一个泛型类型,表示带SI前缀的温度值Kelvins 是特化的Temperature类型,表示无前缀的开尔文温度。
2025-05-02 21:08:52
225
原创 【uom】 1 storage_types宏设计与实现(storage_types.rs)
宏系统是一个高级代码生成工具,主要功能包括:多类型代码生成:为不同数值类型自动生成重复代码结构类型分类支持:内置 7 种类型分类分类名包含类型All所有支持的类型(基本整数、大数、有理数、复数、浮点数)PrimInt基本整数类型(usize, u8-i128)Ratio有理数类型(Rational, Rational32, Rational64, BigRational)Float浮点类型(f32, f64)Signed。
2025-04-30 15:22:24
750
原创 【uom】 0 配置文件(Cargo.toml)
这个配置文件表明 uom 是一个功能完善的单位计量库,支持多种数值类型和单位系统,可以在无标准库环境下使用,并提供了丰富的测试和示例。配置文档生成时启用的特性,包括各种数值类型支持(如 usize, u32, 大整数,有理数等)和 serde 支持。可选的 num-rational/num-bigint/num-complex: 分别支持有理数、大整数和复数。rust-version: 最低支持的 Rust 版本 1.65.0。支持各种数值类型(整数、大整数、有理数、复数等)mks: 米-千克-秒单位制。
2025-04-29 10:26:18
540
原创 【quantity】4 Duration 类型及其实现(time.rs)
Duration 是 Quantity<T, NoPrefix, Second> 的类型别名T 是数值类型(如 i32, f64 等)NoPrefix 表示没有单位前缀Second 表示时间单位是秒。
2025-04-28 21:54:11
488
原创 【quantity】2 Unit 结构体(unit.rs)
这段代码展示了一个强大的类型级物理单位系统实现,利用Rust的类型系统和typenum库在编译期保证物理量运算的正确性。这种设计模式在需要严格类型安全的科学计算、工程应用中非常有用。
2025-04-27 21:55:30
850
原创 【PhysUnits】0.2 创建 crates.io 账号并上传 Rust 库
通过以上步骤,你应该能够成功创建 crates.io 账号并发布你的 Rust 库。发布后,其他开发者可以通过在 Cargo.toml 中添加你的库作为依赖来使用它。在 “API Access” 部分,点击 “New Token”点击右上角的 “Log in with GitHub”授权 crates.io 访问你的 GitHub 账号。你的库现在可以在 crates.io 上找到。然后粘贴你复制的 token 并按回车。修改 Cargo.toml 中的版本号。修改 Cargo.toml 中的版本号。
2025-04-27 11:14:32
1035
原创 【mdlib】 2 主入口代码解析(main.rs)
源码是一个Rust实现的个人Wiki/Markdown知识库系统,主要功能是提供本地Markdown文件的Web浏览和管理界面。这个系统适合作为个人知识管理工具,提供了方便的本地Markdown文件浏览和管理界面,同时具有良好的配置管理能力。–config-file/–conf:指定自定义配置文件路径。std::path::PathBuf - 处理文件路径。关键错误时调用std::process::exit退出。std::env - 访问环境变量和命令行参数。–config/-c:配置管理命令。
2025-04-25 12:27:39
312
原创 【mdlib】 1 mdlib库的全面解析:构建高效 Markdown 知识库的技术栈
mdlib 项目的依赖选择体现了 Rust 生态系统在现代 Web 应用开发中的成熟度:异步基础:tokio + axum + tower 提供了高性能的异步 Web 服务基础核心功能:comrak 提供符合标准的 Markdown 处理能力开发者体验:精心选择的错误处理和日志工具提升了开发效率部署便利:静态资源嵌入实现了真正的单二进制部署这些依赖项共同构成了一个高效、可维护的 Markdown 知识库应用基础架构,展示了 Rust 在构建实用工具类应用方面的强大能力。
2025-04-25 06:01:50
870
原创 【mdlib】0 全面介绍 mdlib - Rust 实现的 Markdown 工具集
mdlib 是由开发者 bahdotsh 创建的一个多功能 Markdown 工具集合,包含两个主要组件:一个轻量级 Markdown 解析库和一个功能完善的个人 Wiki 系统。该项目完全采用 Rust 实现,兼具高性能与跨平台特性。
2025-04-24 22:10:59
534
原创 【TeamFlow】4.4 Wasm-bindgen 库介绍
wasm-bindgen 是一个用于 Rust 和 WebAssembly (Wasm) 之间高级交互的库和工具链。它允许 Rust 代码与 JavaScript 无缝互操作,大大简化了 Rust 编译到 WebAssembly 后的使用体验。
2025-04-24 02:45:00
251
原创 【TeamFlow】4.3.4 长度单位
天文单位使用IAU2012定义值(149,597,870,700米)通过LengthUnit trait提供统一操作接口。将长度单位按使用场景分为公制、英制、天文、航海四类。英制单位添加METRIC=false标记。特殊单位添加SPECIAL=true标记。为每种单位实现Display trait。海里使用国际标准定义(1852米)使用approx处理浮点误差。每个类别有独立的实现文件。使用宏简化重复的转换实现。测试所有类别的单位转换。
2025-04-23 22:10:04
487
原创 【TeamFlow】4.3.3 添加DateTime
该库通过创新的月份重组算法和周期折叠技术,实现了高效准确的公历日期计算,可处理从公元前到公元后的超大时间跨度的日期运算。400年周期:每400年恰好有146097天(365*400 + 100 - 4 + 1)周期折叠:利用400年周期将大数计算转为有限范围。预计算表:使用M_DAYS数组存储每月起始天数。惰性计算:直到需要时才进行完整日期解析。位运算优化:所有除法采用整数运算。闰年2月有29天,全年366天。世纪年份:必须能被400整除。4/6/9/11月:30天。普通年份:能被4整除。
2025-04-23 21:55:45
534
原创 【TeamFlow】4.3.2 细化时间单位
重构base.rs,将其转换为目录结构,并将时间相关单位分离到单独的文件中。将为Time类型(即SIUnit<i64, 0, 0, 1, 0, 0, 0, 0>的别名)实现特例化方法。
2025-04-22 21:38:08
229
原创 【TeamFlow】4.3.1 SI单位系统库(Units)
这个实现提供了强大的类型安全保证,同时保持了Rust的零成本抽象原则,非常适合科学计算、工程模拟等需要严格单位控制的场景。通过泛型支持任意数值类型(f32, f64, 自定义类型等)如 牛顿 = 千克 × 米 / 秒² 直接体现在类型系统中。使用const泛型在编译期跟踪每个单位的量纲指数。非法运算(如 米 + 秒)会导致编译错误。// 乘除法 - 自动计算新量纲。运行时等同于直接操作基础数值类型。导出单位自动继承正确的量纲关系。所有量纲检查在编译期完成。// 相同量纲的加减法。支持上标等专业数学符号。
2025-04-22 19:41:24
1418
原创 【TeamFlow】4.2 Yew库详细介绍
Yew 是一个用于构建高效、交互式前端 Web 应用程序的现代 Rust 框架,它借鉴了 React 和 Elm 等框架的设计理念,同时充分利用 Rust 的语言特性。
2025-04-21 20:53:12
612
原创 【PhysUnits】0.1 Git使用指南
通过以上步骤,你已在 Windows 系统上完成 Git 的配置和基础使用。如需更复杂的工作流(如分支管理、标签发布),可进一步学习 git branch 和 git tag 命令。成功后显示:Initialized empty Git repository in E:/path/to/your/project/.git/选择 Use Git from Git Bash only(推荐)打开 Git Bash(推荐)或 CMD/PowerShell。频繁提交:小步提交,保持提交记录的原子性。
2025-04-21 20:37:43
1288
原创 【TeamFlow】4 团队管理系统(TeamBuild)
这是一个基于Rust和Yew框架构建的专业团队与用户管理Web应用,采用现代WebAssembly技术实现高效性能。系统提供完整的团队层级结构管理、用户管理以及团队-用户多对多关系管理功能,具有清晰的数据模型和响应式用户界面。└── src/├── lib.rs└── utils/├── mod.rs更换存储后端:修改src/services/storage.rs实现新的存储适配器:配置API端点:# .env文件配置。
2025-04-20 21:10:17
854
原创 【TeamFlow】3 Rust 与 WebAssembly (Wasm) 深度应用指南
WebAssembly 是一种低级的类汇编语言,能在现代浏览器中高效执行。Rust 因其无 GC、内存安全和卓越性能,成为编译到 Wasm 的理想语言。
2025-04-20 15:09:45
949
原创 【TeamFlow】 2 TeamFlow 代码结构
模块解耦:可通过Cargo feature flag按需编译组件。扩展便捷:插件式架构支持工业协议扩展(如OPC UA)安全边界:关键操作隔离在独立pallet中。分层清晰:符合领域驱动设计(DDD)原则。提交关键版本(commit)发送CRDT操作(op1)3.2 凭证管理合约。4.2 工业合规服务。
2025-04-18 13:42:20
1010
原创 【TeamFlow】 1 TeamFlow 去中心化生产协同系统架构
pulldown-cmark + syntect(带工业文档语法扩展)opencascade-rs(STEP文件处理)全流程符合IATF 16949质量体系要求。automerge-rs(CRDT实现)parry3d(工业级碰撞检测)GB级STEP文件秒级差异同步。wgpu(GPU加速渲染)lyon(2D路径处理)200+节点并发协同设计。2.2 CAD协同设计。2.3 规范验证模块。
2025-04-18 13:21:03
756
原创 【euclid】10.7 2D变换模块(transform2d.rs)与其它类型的转换
这段代码是 Rust 语言中为 Transform2D 类型实现的一系列方法,主要用于处理二维变换矩阵。下面我会逐步解释这些方法的作用:结构体和方法概述Transform2D<T, Src, Dst> 是一个表示二维变换的泛型结构体,其中:T 是矩阵元素的类型,需要实现 Copy traitSrc 和 Dst 是表示源和目标坐标系的类型参数。
2025-04-17 19:13:49
265
原创 【euclid】10.6 2D变换模块(transform2d.rs)构造函数 new、approx_eq、approx_eq_eps
Transform2D 是一个泛型结构体,有三个泛型参数:T:表示变换矩阵中元素的类型(通常是浮点数类型,如 f32 或 f64)。Src 和 Dst:表示变换的源坐标系和目标坐标系,用于类型安全地处理不同坐标系之间的转换。构造函数 newm11, m12,m21, m22,m31, m32,这是一个构造函数,用于创建一个 Transform2D 实例。m31 和 m32 是平移分量(tx 和 ty)。
2025-04-17 19:00:52
339
原创 【euclid】10.5 2D变换模块(transform2d.rs)Copy、Clone、Eq 和 PartialEq Hash trait
这段代码为 Transform2D 结构体实现了基本的类型 trait:Copy/Clone:允许值被复制/克隆PartialEq/Eq:允许值被比较相等性所有这些实现都依赖于类型参数 T 是否实现了相应的 trait(Copy、Clone、PartialEq 或 Eq)。Src 和 Dst 是标记类型参数,不影响这些 trait 的行为。这种模式在 Rust 中很常见,通过为泛型类型有条件地实现 trait,可以确保类型只在内部类型满足特定约束时才有某些功能。
2025-04-16 18:50:27
330
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人