自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【学Python自动化】 4.1 Python 与 Rust 控制流和函数对比学习笔记

Python 函数"""打印小于n的斐波那契数列"""print()"""返回小于n的斐波那契数列列表"""Rust 函数print!("{} ", a);println!();result特性PythonRust类型系统动态,鸭子类型静态,强类型错误处理异常所有权引用计数所有权系统模式匹配相对简单非常强大函数参数灵活,支持默认值严格,需要明确类型闭包lambda 表达式闭包,处理所有权代码组织缩进花括号。

2025-09-01 09:37:24 81

原创 【学Python自动化】 5. Python 数据结构学习笔记

方法描述等价操作rust Vec类似操作末尾添加元素扩展列表或者更高效:vec.extend_from_slice(&[4, 5, 6]);指定位置插入删除第一个值为x的元素移除并返回指定位置元素vec.pop();及vec.remove(1);清空列表del a[:]返回第一个x的索引统计x出现次数原地排序vec.sort();原地反转浅拷贝a[:]示例代码fruits.index('banana', 4) # 6 (从索引4开始找)

2025-08-31 19:48:53 302

原创 【学Python自动化】 3. Python 速览学习笔记 (Windows 环境)

运算符优先级:** 比 - 优先级更高,-3**2 结果是 -9。这些基础操作是Python编程的基石,建议在交互模式下多加练习!缩进很重要:Python 用缩进来标识代码块,必须保持一致。引号使用:单引号和双引号功能相同,选择一种保持代码一致性。列表可变:列表可以直接修改,注意引用和拷贝的区别。字符串不可变:所有字符串操作都会创建新字符串。print函数的高级用法。混合运算和特殊变量 _转义字符和原始字符串。

2025-08-31 01:00:00 117

原创 【学Python自动化】 4. Python 控制流与函数学习笔记

斐波那契函数"""打印小于n的斐波那契数列"""print()返回列表的函数"""返回小于n的斐波那契数列列表"""

2025-08-30 21:18:06 483

原创 【学Python自动化】 2. Windows Python 解释器使用笔记

现在你已经掌握了Windows下Python解释器的基本用法,开始你的编程之旅吧!实践应用:用Python解决生活中的小问题,如计算器、文件整理等。善用帮助:遇到不熟悉的函数随时使用 help() 查看文档。重新安装Python,勾选"Add to PATH"逐步深入:先从简单的计算和打印开始,逐渐尝试复杂功能。按 Win + R,输入 cmd 打开命令提示符。每日练习:每天花10分钟在交互模式下尝试新命令。或按 Ctrl+Z 然后按 Enter。按 Ctrl+Z + Enter。按上下箭头查看历史命令。

2025-08-30 19:29:01 301

原创 【学Python自动化】 1. Python 安装与配置完全指南 (Windows)

步骤内容状态1下载 Python 3.13.x✅2管理员权限安装,勾选 Add to PATH✅3安装 VS Code + Python 插件✅4创建虚拟环境✅5安装 pyautogui 等库✅6编写第一个自动化脚本✅最终建议:Python 3.13.x + VS Code + 虚拟环境 是目前最适合新手入门Windows自动化的组合,既有现代语言的特性,又有完善的生态支持。

2025-08-30 18:45:36 962

原创 【Rust】 6. 字符串学习笔记

str - 字符串切片(通常作为引用出现)String - 动态可变的、拥有所有权的字符串&str: 静态、不可变、零成本抽象的字符串视图String: 动态、可变、拥有所有权的字符串UTF-8 编码确保完整的 Unicode 支持设计注重内存安全和性能丰富的API支持各种字符串操作性能提示:频繁的字符串修改建议使用 String,只读操作使用 &str。

2025-08-29 15:52:28 445

原创 【Rust】 5. Trait 与运算符重载

Trait 是 Rust 多态性的核心机制标记特质用于在类型系统中标记类型属性关联类型和 GATs 支持高级类型计算区分静态分发与动态分发的适用场景遵循一致性原则(孤儿规则)合理使用 derive 派生宏减少样板代码标准库 trait 为运算符重载和类型转换提供基础Trait 对象 (dyn Trait) 提供运行时多态性Supertraits 支持 trait 组合和继承通过熟练掌握 trait 系统,可以编写出灵活、高效且类型安全的 Rust 代码。

2025-08-29 12:55:31 793

原创 【Rust】 4. 函数与闭包

总结: 闭包提供了比函数更大的灵活性,特别是在需要捕获上下文和进行函数式编程的场景中。在 Rust 中,函数是一等公民(First-class citizens),可以像普通值一样被赋值、传递和返回。特点: 发散表达式可以被转换为任何类型,这在需要统一类型的场合(如 match 表达式的不同分支)很有用。函数体内可以定义其他项(如静态变量、常量、嵌套函数、trait、类型等)。这是闭包与函数最核心的区别:闭包可以捕获并使用其定义作用域内的变量。返回值:函数可以返回一个值,或不返回任何值(即返回 ())。

2025-08-28 16:42:57 886 2

原创 【Rust】 3. 语句与表达式笔记

连续比较:a == b == c // 错误!// 应写成:a == b && b == cif 表达式遗漏 else 分支:// 错误!if 是 i32,隐含 else 是 ()// 应补充 else 分支或使用其他控制流误在表达式末尾加分号(尤其是在函数最后一行和块的最后一行):42;// 错误!变成了语句,返回 () 而非 i32// x 的类型是 (),而不是 i32。

2025-08-28 16:10:10 790

原创 【Rust】 2. 数据类型笔记

Rust 是静态类型语言,所有变量类型在编译时就必须确定。Rust的类型系统设计强调安全性和性能:静态类型检查在编译期捕获错误丰富的标量和复合类型满足各种需求明确的类型转换规则防止隐式错误内存安全的设计避免常见编程错误选择合适的数据类型需要综合考虑数据的特性、内存使用、性能需求和代码可维护性等因素。

2025-08-27 15:27:44 717

原创 【Rust】 1. 变量学习笔记

Rust 的变量系统体现了语言的核心理念:安全第一:默认不可变、必须初始化明确表达:显式的可变性声明灵活实用:变量遮蔽、类型推导、模式解构零成本抽象:编译期检查,运行时无额外开销掌握 Rust 的变量系统是学习这门语言的重要第一步,它为理解所有权、借用等更高级概念奠定了基础。

2025-08-27 13:55:14 1005

原创 【typenum】30 类型级别的取负(Neg)

解释:这是一个类型别名,用于简化代码Negate等价于::Output(即类型A实现Neg特质后的输出类型)作用:让代码更简洁易读,避免重复写冗长的关联类型语法。

2025-08-26 22:33:34 445

原创 【typenum】 29 类型级别的数字数组标记特质(TypeArray)

//关键概念:标记特质(Marker Trait):不包含任何方法的特质,仅用于在类型系统中标记某些类型具有特定属性类型级别数组:在编译时表示数组的类型信息,而不是运行时的实际数据Sealed:这是一个密封特质,防止外部crate实现该特质,确保只有当前crate能控制哪些类型实现它注释说明:未来可能添加关联常量来生成运行时数组目前受限于 Rust issue #44168(常量泛型相关限制)

2025-08-26 22:07:02 301

原创 【typenum】 28 数组长度和二进制数的位数(Len)

/ 输出类型必须是Unsigned// 运行时获取长度的方法类型级操作符: 在编译时计算长度Output: 关联类型,表示长度的类型(必须是Unsigned类型)len(): 运行时方法,实际返回类型级别的长度值。

2025-08-25 21:02:47 606

原创 【typenum】 27 二进制数反转的trait实现(private.rs片段)

PrivateInvert trait: 一个私有trait,用于实现二进制数的位反转操作Rhs: 类型参数,表示当前已经处理的结果Output: 关联类型,表示反转操作的最终结果类型PrivateInvertOut: 类型别名,简化对Output类型的访问。

2025-08-25 12:58:15 586

原创 【typenum】 26 标准数字和“反转数字“之间进行转换的 trait 系统(private.rs片段)

反转表示: InvertedUInt<InvertedUInt<InvertedUInt<InvertedUTerm, B1>, B0>, B1> (LSB在外)这段代码实现了一个用于在标准数字和"反转数字"之间进行转换的 trait 系统,主要用于处理大数的数字表示。标准表示: UInt<UInt<UInt<UTerm, B1>, B0>, B1> (MSB在外)定义 Invert trait,用于将数字从标准表示转换为反转表示,或反之。零大小类型: 所有类型在运行时都是零大小的,编译时完成所有计算。

2025-08-24 19:34:04 336

原创 【typenum】 25 去除无符号整数前导零的特性(private.rs片段)

这个 trait 提供了一个简洁的接口来处理数值的前导零问题,通过组合现有的 Invert 和 TrimTrailingZeros 功能来实现。这段 Rust 代码定义了一个用于处理无符号整数的便利 trait,主要用于去除数值前导的零(实际上是通过反转字符串处理方式来实现的)。方法链: 使用 self.invert().trim_trailing_zeros().invert() 的流畅接口。任何实现这个 trait 的类型都可以调用 trim() 方法来获得修剪后的结果。避免前导零影响数值比较和显示。

2025-08-24 19:10:50 362

原创 【typenum】 24 去除尾部零的特性(private.rs片段)

/ 关联类型:修剪后的输出类型。

2025-08-23 23:02:05 560 1

原创 【typenum】 23 倒序存储的无符号整数(private.rs片段)

msb: IU, // 更高位的数字(在外部)lsb: B, // 最低位数字这个结构使用类型级编程,在编译时表示数字。

2025-08-23 22:47:31 306

原创 【typenum】 22 类型级别二进制对数运算(Logarithm2)

封装实现细节:PrivateLogarithm2 是私有trait,隐藏具体算法。这种设计模式在类型级编程中很常见,提供了良好的封装性和可维护性。控制可见性:用户只能看到公开的 Logarithm2 接口。实现:具体的算法实现(使用了私有trait模式)定义了一个公开的trait Logarithm2。这段代码实现了一个类型级别的二进制对数运算系统。防止误用:用户不能直接实现或依赖私有trait。这是一个类型运算符,在编译时计算二进制对数。关键设计模式:私有trait模式。别名:提供简洁的类型别名。

2025-08-22 22:33:12 537

原创 【typenum】 21 类型级别计算最大公约数(Gcd)

这是一个类型级编程的实现,使用Rust的trait系统在编译时计算GCD,而不是运行时。这是一个典型的使用Rust类型系统进行编译时计算的例子,展示了如何利用trait系统和关联类型来实现复杂的数学运算。双奇数:gcd(x, y) = gcd(|x-y|, min(x,y))(利用两奇数差为偶数的性质)双偶数:gcd(x, y) = 2 * gcd(x/2, y/2)x奇y偶:gcd(x, y) = gcd(x, y/2)x偶y奇:gcd(x, y) = gcd(x/2, y)

2025-08-22 22:00:32 516

原创 【typenum】 20 类型函数Abs(type_operators.rs片段)

这是一个典型的类型级别编程范例,将数值运算提升到类型系统层面,在编译期完成计算,确保运行时效率。代码定义了一个用于计算类型级别绝对值的 trait Abs,是类型级别编程的典型示例。类型级别绝对值计算:在编译时计算整数的绝对值,结果也是一个类型。类型安全:通过 trait 系统保证正确性。零运行时开销:所有计算在编译期完成。泛型编程:支持任意大小的整数类型。PInt = 类型级别的 +3。NInt = 类型级别的 -5。Z0 = 类型级别的 0。维度检查(如矩阵运算)数学库的类型安全运算。

2025-08-21 22:31:57 503

原创 【typenum】 19 类型相同检查(type_operators.rs片段)

这是一个零开销的编译时类型检查工具:✅ 运行时无性能损耗✅ 编译时类型安全✅ 支持泛型编程和宏扩展✅ 利用 Rust 的 trait 系统和惰性求值特性主要用于构建类型安全的领域特定语言(DSL)和高级类型系统操作。

2025-08-21 22:13:32 230

原创 【unitrix数间混合计算】3.4 无符号小数部分标记trait(bin_Frac.rs)

这段代码定义了一个类型级二进制小数系统,用于在编译时表示和验证二进制小数部分的有效性。这是一个优雅的类型级编程示例,展示了如何在编译时确保数据的有效性和正确性。表示小数部分为 0(如:101. → 整数部分后面没有小数)递归定义:每个 BFrac 包含一个比特和剩余的小数部分。trait 约束:为其他需要小数参数的函数提供类型约束。类型安全:要求 B 是合法比特,F 是合法小数。类型验证:确保只有合法的小数类型才能被使用。编译时保障:防止无效的小数类型被误用。类型安全:防止无效的小数构造。

2025-08-20 20:53:50 306

原创 【unitrix数间混合计算】3.3 无符号整数标记trait(bin_unsigned.rs)

这段代码是用 Rust 语言实现的一个类型级无符号二进制整数系统,通过类型系统在编译时表示和操作二进制数字。这是一种典型的"类型级编程"(type-level programming)技术。这是一种高级的 Rust 编程技术,展示了 Rust 强大的类型系统和编译时计算能力。这种设计既解决了技术问题,又提供了更好的开发体验,是一个很优秀的重构方案。to_u8()/to_u16()/…编译时计算:使用 const 常量在编译时完成数值计算。类型安全:通过类型系统保证数值的有效性。

2025-08-20 17:57:00 502

原创 【unitrix数间混合计算】3.2 非零标记trait(non_zero.rs)

原代码通过NonZero特质标记非零整数类型(包括正负整数和无符号整数)。扩展到小数(定点数)时,需要同时检查整数部分和小数部分。扩展到浮点数时,需要根据指数和尾数的状态判断非零条件。通过增加位数(类型参数)可以拓宽表示范围和提高精度。这种类型级编程常用于嵌入式系统、数值计算和高安全性领域,在编译期确保数值有效性(如避免除零错误)。

2025-08-19 22:16:58 1081

原创 【typenum】 18 调试代码(test.rs)

作用: 这段代码只有在运行 cargo test 时才会被编译和执行,正常构建 (cargo build) 时会完全忽略。这段代码的意思是:在测试模式下,将 OUT_DIR/tests.rs 文件的内容包含到当前模块中。这段代码是 Rust 项目中常见的测试模块配置,主要用于条件编译和动态包含测试文件。这种动态包含的方式主要适用于需要自动生成测试或管理大量测试文件的复杂项目。这是一个内置宏,用于在编译时将指定文件的内容直接包含到当前位置。test: 指定条件 - 只在运行测试时编译。2. include!

2025-08-19 21:35:55 395

原创 【unitrix数间混合计算】3.1 零标记trait(zero.rs)

定义了一个公开的标记特征Zero它要求实现者必须也实现Sealed trait(这是一种防止下游crate实现该trait的模式,称为"sealed trait"模式)

2025-08-18 16:55:16 334 1

原创 【typenum】 16 无符号整数标记

Unsigned 是一个标记 trait(marker trait),用于表示编译时的无符号整数。它要求实现者必须:实现 Sealed trait(防止外部实现)实现 Copy 和 Default具有 'static 生命周期它定义了一系列关联常量和方法,用于将编译时数字转换为运行时数字:关联常量:U8, U16, U32, U64, U128, USIZE:对应各种无符号整数类型的值I8, I16, I32, I64, I128, ISIZE:对应各种有符号整数类型的值。

2025-08-18 11:01:36 3604

原创 【typenum】 17 非零标记及改进建议

标记 trait:没有方法或关联类型,仅用于类型分类作用:标识该类型代表非零值Sealed:这是一个密封 trait,防止外部类型实现注释说明:除了 B0、U0 和 Z0 外,所有数值类型都实现此 trait。

2025-08-17 17:35:47 439

原创 【typenum】 15 零标记及改进建议

这里的 : Sealed 表示这个 trait 是一个密封 trait(sealed trait),只能由当前 crate 中的类型实现,防止外部类型实现它。代码展示了一个 Rust 设计模式中的"标记 trait"(marker trait)的使用,以及它在三个不同类型中的实现。这种模式在 Rust 的类型系统中很常见,特别是在涉及类型级数字(如 typenum 库)或其他编译时验证的场景中。这个函数只能接受实现了 Zero 的类型(B0、UTerm 或 Z0),并在编译时保证类型正确性。

2025-08-17 10:27:07 968

原创 【unitrix数间混合计算】2.24 有符号二进制数的减法(signed_sub.rs)

这种实现方式展示了Rust强大的类型系统能力,可以在编译期完成复杂的数学运算检查,适用于需要高安全性和确定性的场景。这段代码是用Rust的类型系统实现的有符号二进制数的减法运算。Ord限定表示这是一个比较结果(Equal/Greater/Less)类型安全:保证不会出现非法操作(如负数减正数会自动处理为负数)编译时计算:所有操作都在编译时通过类型系统完成。根据比较结果(CmpOut)选择相应的操作。比较驱动:根据比较结果选择不同的减法策略。Output是操作结果的类型。R是右操作数类型(正数)

2025-08-15 09:50:42 570

原创 【unitrix数间混合计算】2.23 类型级二进制非负数减法(usub.rs)

它使用了类型系统来表示二进制数并在编译时进行计算。Bin<U, B> 表示一个二进制数,其中U是更高位的部分,B是最低位(0或1)类型级编程:在编译时通过类型系统进行计算,而不是运行时。类型安全:保证不会出现负数结果(因为是非负数减法)递归计算:通过类型系统递归地处理二进制数的每一位。编译时计算:所有操作都在编译时通过类型系统完成。形式:U0 - V1 = (U-V-1)1。形式:U0 - V0 = (U-V)0。形式:U1 - V0 = (U-V)1。形式:U1 - V1 = (U-V)0。

2025-08-15 09:38:22 432

原创 【unitrix数间混合计算】2.22 正数有符号计算特质(bin_signed_op_with.rs) ▲ 被替代

定义了一个泛型trait,用于根据比较结果执行有符号运算约束:Lhs和Rhs必须是正二进制数(BinPos)实现者(Self)必须是比较结果类型(Ord的子类型)关联类型Output表示运算结果类型signed_op方法执行实际运算。

2025-08-14 16:40:53 339

原创 【unitrix数间混合计算】2.21 二进制整数加法计算(bin_add.rs)

这段代码是用Rust实现的类型级二进制整数加法运算,通过类型系统在编译期完成计算。它定义了一系列trait实现来处理不同类型的二进制数相加的情况。这种类型级编程技术在需要编译期计算的场景中非常有用,如模板元编程、维度检查等。使用Default::default()作为占位符,实际值由类型系统决定。Bin<U, B>: 表示二进制数,U是高位部分,B是最低位(0或1)任何数加0等于它自己,0加任何数也等于它自己。Z0: 表示数字0,也是数的终止标志。: 表示负数,P是其绝对值对应的正数。

2025-08-14 16:21:43 372

原创 【unitrix数间混合计算】2.20 比较计算(cmp.rs)

这个系统通过Rust的类型系统实现了编译期的数值比较,包括:二进制位比较整数比较(正数、零、负数)小数比较纯小数比较所有比较操作都在编译期完成,不产生运行时开销。这种技术常用于需要高性能计算的领域或嵌入式系统编程。

2025-08-13 10:27:43 606

原创 【unitrix数间混合计算】2.19 取负计算(neg.rs)

这段代码为多种数值类型实现了取负操作:零(Z0):取负不变。二进制整数:正负互换。二进制小数:正负互换。科学计数法浮点数:正负互换。运行时变量:委托内部值的取负操作。所有实现都用了 #[inline] 提示编译器内联优化,适合高性能场景。

2025-08-13 09:58:15 473

原创 【unitrix数间混合计算】2.15 二进制减一操作(sub_one.rs)

类型级别计算:所有计算都在编译期通过类型系统完成递归处理:对于二进制数的借位操作使用递归实现特殊情况处理:对1(Bin<Z0, I>)有特殊实现负数处理:负数减一转换为绝对值加一零处理:特殊处理0的情况。

2025-08-12 09:47:14 460

原创 【unitrix数间混合计算】2.14 二进制加一操作(add_one.rs)

类型级别计算:所有计算都在编译期通过类型系统完成递归处理:对于二进制数的进位操作使用递归实现模式匹配:通过匹配二进制数的最低位(O/I)来决定如何操作负数处理:负数加一转换为绝对值减一零处理:特殊处理0的情况这个实现展示了Rust类型系统的强大能力,可以在编译期完成数值计算,完全不需要运行时开销。

2025-08-12 09:30:50 218

从头写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关注的人

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