摘要: 首先,我非常感谢cnblogs这么好的一个平台给我们这些计算机方面的人提供这么一个共享的平台! 其次,我希望大家共享知识,共同交流进步! 然后,如果在转载中侵犯了您的权益,请及时联系我。 音频视频: ebaina live555 阅读全文
posted @ 2015-10-30 21:04 PKICA 阅读(255) 评论(0) 推荐(0)
摘要: 本篇是nom库第六篇了,相信大家在以往的nom库学习中对nom库有了很深刻的理解。古人云,学而不思则罔,思而不学则殆,今天咱们讲讲nom库组合器的设计哲学。 1. 零成本抽象 nom 的设计遵循 "零成本抽象" 原则,其关键特性包括: 完全基于组合器:小的解析器通过组合器组合成大的解析器 尽可能依赖 阅读全文
posted @ 2026-02-11 12:34 PKICA 阅读(0) 评论(0) 推荐(0)
摘要: 1. nom::sequence nom::sequence 模块提供了一组解析组合器,允许你以特定的顺序组合多个解析器。这对解析复杂数据结构时非常有用,比如记录或结构体等。 主要接口和功能 以下是 nom::sequence 模块中的一些常用解析器: 1). preceded 功能: 先解析第一个 阅读全文
posted @ 2026-02-10 16:42 PKICA 阅读(2) 评论(0) 推荐(0)
摘要: 在 Rust 中,core::num 模块是标准库中最底层的数值处理单元。由于它属于 core crate,因此在不带操作系统的底层开发(no_std)中依然可用。 以下是 core::num 的核心组成与用途详述: 1. 核心任务:数值类型增强 Rust 的原生数值类型(如 u8, i32, f6 阅读全文
posted @ 2026-02-05 16:33 PKICA 阅读(5) 评论(0) 推荐(0)
摘要: 在 Rust 中,内部可变性(Interior Mutability) 是一种特殊的模式,它允许你在拥有不可变引用(&T)的情况下,仍然能够修改其内部的数据。 这听起来违反了 Rust 的核心借用规则,但它通过将编译期的检查推迟到运行期,为处理复杂的对象关系(如 Arc 或 Rc 的共享数据)提供了 阅读全文
posted @ 2026-02-05 16:24 PKICA 阅读(2) 评论(0) 推荐(0)
摘要: 在 Rust 中,Arc 和 Rc 都是用于实现共享所有权的引用计数智能指针。它们允许一个数据拥有多个“所有者”,直到最后一个所有者消失,数据才会被释放。 它们最大的区别在于:线程安全性。 1. 核心对比 特性Rc<T>Arc<T> 全称 Reference Counted (引用计数) Atomi 阅读全文
posted @ 2026-02-05 15:01 PKICA 阅读(6) 评论(0) 推荐(0)
摘要: 在 Rust 中,当你希望函数参数是一个“特征(Trait)”时,写成 &dyn Trait 或 impl Trait(以及对应的引用形式 &impl Trait)是由 Rust 的内存管理和对象安全性决定的。 其中:impl Trait获取所有权.函数调用后,原变量在外部可能无法再使用。函数内部可 阅读全文
posted @ 2026-02-04 17:01 PKICA 阅读(5) 评论(0) 推荐(0)
摘要: 前面花了很多精力讲解了Rust泛型,不知道大家掌握的咋样了,今天呢,讲一下进阶的东西。 泛型类型的具体化(Monomorphization) 以及 避免无限递归/类型推导困境。 bstr::ByteSlice::find pub fn find<B>(&self, needle: B) -> Opt 阅读全文
posted @ 2026-02-04 13:53 PKICA 阅读(5) 评论(0) 推荐(0)
摘要: 在 Rust 中,数组 [T; N] 是长度固定且在栈(Stack)上分配的连续内存块。虽然数组的大小在编译时就已固定,但它能自动“隐式转换”为切片 &[T],因此你可以直接在数组上调用绝大多数切片的方法。 以下是常用接口及 starts_with 的详细用法: 1. 核心接口:starts_wit 阅读全文
posted @ 2026-02-03 16:38 PKICA 阅读(3) 评论(0) 推荐(0)
摘要: rstest 是目前 Rust 社区中最流行的增强型测试框架。它通过过程宏(Procedural Macros)极大地扩展了标准库 #[test] 的功能。 如果你习惯 Python 的 pytest,你会发现 rstest 的设计思路非常亲切。 在前面的文章中,我们也介绍了test_case测试库 阅读全文
posted @ 2026-02-02 16:50 PKICA 阅读(5) 评论(0) 推荐(0)
摘要: 上一篇我们讲解了过程宏的概念和普通实例,这一章我们深入开展,让你在实战中游刃有余。下面以一个示例展开讲解,方便大家理解。 示例: pub fn derive_enum_string<T: std::str::FromStr + quote::ToTokens>(input: TokenStream, 阅读全文
posted @ 2026-02-02 14:44 PKICA 阅读(11) 评论(0) 推荐(0)