自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(280)
  • 收藏
  • 关注

原创 【libm】2整数接口(int_traits.rs)

这段代码是数学库的基础设施,通过 trait 和宏实现了:整数类型的通用操作抽象。安全且高效的类型转换。宽/窄整数的互操作。为上层算法(如浮点数解析、大数运算)提供了类型安全的底层支持。

2025-05-05 12:01:32 204

原创 【libm】1实数接口(float_traits.rs)

这段代码是 Rust 数学库的核心部分,通过 trait 和宏实现了浮点数的通用操作,支持从 f16 到 f128 的多种类型,同时确保高性能和类型安全。

2025-05-05 04:35:23 633

原创 【libm】0库入口文件(lib.rs)

纯 Rust 实现:不依赖 std,适合嵌入式或无 OS 环境。条件编译:支持 WASM、f16/f128 等实验性功能。数学函数:核心逻辑在 math 模块中实现(如 sin、exp)。安全优先:严格限制 unsafe 的使用。

2025-05-05 04:22:01 338

原创 【quantity】11 体积单位模块(volume.rs)

我们实现 volume.rs 文件,包含 d(分,deci)、c(厘,centi)、m(毫,milli) 前缀的体积单位。体积的基本单位是 立方米(CubicMeter),而常用的衍生单位包括 升(Liter)(即立方分米)。

2025-05-04 17:07:22 183

原创 【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 96

原创 【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 334

原创 【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 306

原创 【quantity】7 角度单位模块(angle.rs)

代码定义了一个用于处理不同角度单位的Rust模块,支持弧度(radians)、度(degrees)和哥恩(gradians/gons)之间的转换,以及带SI前缀的弧度单位(如毫弧度、微弧度)。

2025-05-03 20:18:39 282

原创 【quantity】6 温度单位实现(temperature.rs)

// 带SI前缀的通用温度/// 开尔文温度Temperature 是一个泛型类型,表示带SI前缀的温度值Kelvins 是特化的Temperature类型,表示无前缀的开尔文温度。

2025-05-02 21:08:52 222

原创 【quantity】5 derive_more库 2.0 版介绍

/ 输出: (1, 2)

2025-05-02 20:57:29 1033

原创 【uom】 2.1 quantity 宏参数完整说明(quantity.rs)

基本单位系数设为1.0派生单位通过系数转换。

2025-04-30 19:20:04 621

原创 【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 747

原创 【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 497

原创 【quantity】4 Duration 类型及其实现(time.rs)

Duration 是 Quantity<T, NoPrefix, Second> 的类型别名T 是数值类型(如 i32, f64 等)NoPrefix 表示没有单位前缀Second 表示时间单位是秒。

2025-04-28 21:54:11 488

原创 【quantity】3 物理量计算库(quantity.rs)

/ 其他基本单位...

2025-04-28 12:27:34 675

原创 【quantity】2 Unit 结构体(unit.rs)

这段代码展示了一个强大的类型级物理单位系统实现,利用Rust的类型系统和typenum库在编译期保证物理量运算的正确性。这种设计模式在需要严格类型安全的科学计算、工程应用中非常有用。

2025-04-27 21:55:30 848

原创 【quantity】1 创建 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 1030

原创 【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 863

原创 【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 247

原创 【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 485

原创 【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 528

原创 【TeamFlow】4.3.2 细化时间单位

重构base.rs,将其转换为目录结构,并将时间相关单位分离到单独的文件中。将为Time类型(即SIUnit<i64, 0, 0, 1, 0, 0, 0, 0>的别名)实现特例化方法。

2025-04-22 21:38:08 227

原创 【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

原创 【quantity】0 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 1280

原创 【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 851

原创 【TeamFlow】3 Rust 与 WebAssembly (Wasm) 深度应用指南

WebAssembly 是一种低级的类汇编语言,能在现代浏览器中高效执行。Rust 因其无 GC、内存安全和卓越性能,成为编译到 Wasm 的理想语言。

2025-04-20 15:09:45 921

原创 【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 755

原创 【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 338

原创 【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

原创 【euclid】10.4 2D变换模块(transform2d.rs)Pod trait

这段代码为 Transform2D 类型启用了 bytemuck 的 Pod 支持,允许它在启用 bytemuck feature 时安全地进行底层字节操作,前提是其泛型参数 T 也满足 Pod,且 Src/Dst 不引入非静态生命周期。

2025-04-16 18:38:39 813

原创 【euclid】10.3 2D变换模块(transform2d.rs)bytemuck trait

这段代码是一个 Rust 的 unsafe trait 实现,用于标记 Transform2D 类型在特定条件下可以安全地被视为由全零字节组成的有效实例。让我们详细解释每个部分:这是一个条件编译属性,表示只有当 bytemuck feature 被启用时,下面的代码才会被编译。bytemuck 是一个 Rust crate,提供了一些 trait 和工具,用于安全地在类型和原始字节之间进行转换。

2025-04-15 19:06:54 955

原创 【euclid】10.2 2D变换模块(transform2d.rs)Arbitrary trait

这段代码使得 Transform2D 类型能够:在启用 arbitrary feature 时从其元素类型 T 也是 Arbitrary 的前提下随机生成一个 2D 变换矩阵用于基于属性的测试(property-based testing)这种实现特别适用于快速检查代码在不同输入下的行为是否符合预期,是 Rust 生态中常见的测试实践。

2025-04-15 18:05:14 245

原创 【euclid】10.1 2D变换模块(transform2d.rs)结构体定义核心解读及个人代码参照优化

/ 矩阵元素(列主序)pub m11: T, pub m12: T, // 第一列:线性变换部分pub m21: T, pub m22: T, // 第二列:线性变换部分pub m31: T, pub m32: T, // 第三列:平移分量// 类型标记(零大小类型)

2025-04-14 13:20:14 1387

原创 【Raqote】 1.3.1 着色器SolidShader结构体(blitter.rs)

定义了一个公开的结构体 SolidShader包含一个公开字段 color,类型为 u32(无符号32位整数)这个color字段通常表示ARGB格式的颜色值(Alpha, Red, Green, Blue各占8位)

2025-04-14 00:15:00 355

原创 【Raqote】 1.2.2 路径填充 MaskBlitter结构体(blitter.rs)

MaskBlitter 结构是一个简化的光栅化器,用于处理不透明图形的光栅化,与之前看到的 MaskSuperBlitter 不同,它不支持抗锯齿处理。

2025-04-13 04:00:00 459

从头写CAD完成部分源码

从头写CAD完成部分源码

2024-09-08

角度类、长度类及相关文件源码

角度类、长度类及相关文件源码

2024-09-03

【从头写CAD】 几何体类系列一 开篇

Point类源码

2024-08-28

【从头写CAD】点类Point

【从头写CAD】点类Point

2024-08-25

【从头写CAD】 主程序

相关源码

2024-08-21

【从头写CAD】 程序集

【从头写CAD】 程序集

2024-08-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除