![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Rust(官方文档重点总结)
文章平均质量分 94
该专栏内容均来自官方文档(侵删):https://kaisery.github.io/trpl-zh-cn/foreword.html
Rust 程序设计语言的本质实际在于 赋能(empowerment):无论你现在编写的是何种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。
Y小夜
清醒,自律,知进退,明得失
展开
-
【Rust】——生命周期
🎯生命周期🎯生命周期避免了悬垂引用🎃借用检查器🎯函数中的泛型生命周期🎯生命周期注解语法🎯函数签名中的生命周期注解🎯深入理解生命周期🎯结构体定义中的生命周期标注🎯生命周期的省略🎃生命周期省略的三个规则🎯方法定义中的生命周期🎯静态生命周期🎯泛型参数类型、Trait Bound、生命周期原创 2024-04-04 13:10:18 · 3456 阅读 · 107 评论 -
【Rust】——所有的模式语法
目录🎯匹配字面值🎯匹配命名变量🎯多个模式🎯通过..-=匹配值的范围🎯解构并分解值🎃解构结构体🎃解构枚举🎃解构嵌套的结构体和枚举🎃解构结构体和元组🎯忽略模式中的值🎃使用_使用忽略整个值🎃使用嵌套的_忽略部分值🎃通过在名字前以一个_开头来忽略未使用的变量🎃用..忽略剩余值🎯匹配守卫提供的额外条件🎯@绑定原创 2024-06-30 10:42:26 · 2600 阅读 · 184 评论 -
【Rust】——Refutability(可反驳性):模式是否匹配失效
【Rust】——Refutability(可反驳性):模式是否匹配失效原创 2024-06-26 08:59:49 · 666 阅读 · 91 评论 -
【Rust】——所有可能会用到模式的位置
🎯match分支🎯if let 条件表达式🎯while let条件循环🎯for循环🎯let语句🎯函数参数原创 2024-06-24 10:49:23 · 2263 阅读 · 99 评论 -
【Rust】——估计不同类型值的trait对象
🎯定义通用行为的trait🎯实现trait🎯trait对象执行分发原创 2024-06-11 13:50:28 · 802 阅读 · 3 评论 -
【Rust】——【面向对象语言的特征】
目录🎯对象包含数据和行为🎯封装隐藏了实现细节🎯继承,作为系统与代码共享原创 2024-06-05 11:00:39 · 2377 阅读 · 189 评论 -
【Rust】——使用Sync和Send trait的可拓展并发
目录🎯通过Send允许在线程间转移所有权🎯Sync允许多线程访问🎯手动实现Send和Sync是不安全的🎯小结原创 2024-06-04 13:02:07 · 779 阅读 · 4 评论 -
【Rust】——使用消息在线程之间传递数据
目录🎯信道与所有权转移🎯发送多个值并观察接收者的等待🎯通过克隆发送者来创建多个生产者原创 2024-05-29 13:38:35 · 2541 阅读 · 163 评论 -
【Rust】——共享状态并发
🎯互斥器一次只允许一个线程访问数据🎯Mutex的API🎃在线程间共Mytex🎃多线程和多所有权🎃原子引用计数Arc🎯RefCell?Rc与Mute/Arc的相似性原创 2024-05-25 09:17:06 · 772 阅读 · 73 评论 -
【Rust】——使用线程同时运行代码
目录🎯使用soawn创建新线程🎯使用join等待所有线程结束🎯将move闭包与线程一同使用原创 2024-05-21 13:14:45 · 1214 阅读 · 107 评论 -
【Rust】——引用循环与内存泄漏
目录🎯制造引用循环🎃创建树形数据结构:带有子节点的Node🎃增加子到父的作用🎃可视化strong_count和week_count的改变原创 2024-05-06 13:12:44 · 1653 阅读 · 88 评论 -
【Rust】——使用Drop Trait 运行清理代码和Rc<T> 引用计数智能指针
🎯使用Drop Trait 运行清理代码🎃通过std::mem::drop提早丢弃值🎯Rc 引用计数智能指针🎃使用Rc共享数据🎃克隆Rc会增加引用计数原创 2024-05-01 12:19:40 · 1120 阅读 · 90 评论 -
【Rust】——RefCall<T>和内部可变模式
目录🎯通过RefCell在运行时检查借用规则🎯内部可变性:不可变值的可变借用🎃内部可变性的用例:mock对象🎯RefCell在运行时记录借用🎯结合Rc和RefCell来拥有多个可变数据所有者原创 2024-04-25 12:19:51 · 1378 阅读 · 92 评论 -
【Rust】——通过Deref trait将智能指针当作常规引用处理
🎯追踪指针的值🎯像引用一样使用Box🎯自定义智能指针🎯通过实现Deref trait 将某一类型像引用一样处理🎯函数和方法的隐式Deref强制转换🎯Deref强制转换如何与可变交互原创 2024-04-22 12:39:57 · 1760 阅读 · 96 评论 -
【Rust】——项目实例:命令行实例(二)
🎯使用TDD(测试驱动开发)开发库功能🎃编写失败测试🎃编写测试通过的代码✨使用lines方法遍历每一行✨用查询字符串搜索每一行✨存储匹配的行🎃在run函数中使用search函数🎯使用环境变量🎃编写一个大小写不敏感的search函数的失败测试🎃实现search_case_insensitive函数🎯将错误信息输出到标准错误而不是标准输出🎃检查错误应该写入何处🎃将错误打印到标准错误原创 2024-04-21 12:08:57 · 868 阅读 · 26 评论 -
【Rust】——项目实例:——命令行实例(一)
🎯接收命令行程序🎃读取参数🎃将参数值保存进变量🎯读取文件🎯重构🎃二进制项目的关注分离🎃提取参数解析器🎃组合配置值🎃修复错误处理✨改善错误信息🎃从new中返回一个Result🎃调用config::build并处理错误🎃从main提取逻辑🎃从run函数中返回错误🎃处理main中run返回的错误🎃将代码拆分到库crate原创 2024-04-19 09:54:08 · 2447 阅读 · 85 评论 -
【Rust】——使用Box<T>指向堆上数据
🎯使用Box在堆上储存数据🎯Box允许创建递归类型🎃cons list 的更多内容🎃计算非递归类型的大小🎃使用Box给递归类型一个已知的大小原创 2024-04-17 18:18:39 · 781 阅读 · 4 评论 -
【Rust】——Cargo工作空间
🎯创建工作空间🎯在工作空间中创建第二个包🎃在工作空间中依赖外部包🎃为工作空间增加测试🎯使用cargo install安装二进制文件🎯Cargo自定义扩展命令原创 2024-04-16 13:40:28 · 1807 阅读 · 86 评论 -
【Rust】——采用发布配置自定义构建
🎯将crate发到Crate.io🎃编写有用的文档注解✨常用(文档注释)部分✨文档注释作为测试✨注释包含项的结构🎃使用pub use 导出合适的共有API🎃创建create.io账户🎃向新crate添加元信息🎃发布到Crate.io🎃使用cargo yank 从Crate.io弃用版本原创 2024-04-15 12:33:08 · 7618 阅读 · 79 评论 -
【Rust】——改进I/O项目
🎯使用迭代器并去掉clone🎯直接使用返回的迭代器🎯使用Iterator trait代替代替索引🎯使用迭代器适配器来使代码更简明🎯选择循环或者迭代器🎯性能对比:循环vs迭代器原创 2024-04-10 13:09:59 · 646 阅读 · 9 评论 -
【Rust】——测试的组织
🎯单元测试🎃测试模块和#[cfg(test)]🎃测试私有函数🎯集成测试🎃tests目录🎃集成测试的子模块🎃二进制create的集成测试原创 2024-04-09 12:29:32 · 868 阅读 · 5 评论 -
【Rust】——编写自动化测试
🎯控制测试如何运行🎃并行或连续的运行测试🎃显示函数输出🎯按测试的名称进行测试🎯忽略测试原创 2024-04-08 12:54:11 · 1435 阅读 · 12 评论 -
【Rust】——Trait
🎯Trait简介🎯定义一个Trait🎯在类型上实现trait🎯实现trait的约束🎯默认实现🎯trait作为参数🎯Trait Bound语法🎯通过+指定多个trait bound🎯通过where简化trait bound🎯实现Trait作为返回类型🎯使用Trait Bound有条件的实现方法原创 2024-04-07 12:59:24 · 1125 阅读 · 6 评论 -
【Rust】——使用迭代器处理元素序列
🎯Iterator trait和next方法🎯消费迭代器的方法🎯产生其他迭代器的方法🎯使用捕获其环境的闭包原创 2024-04-03 16:09:13 · 601 阅读 · 3 评论 -
【Rust】——闭包
目录🎯闭包会捕获其环境🎯闭包类型推断和注解🎯捕获引用或者移动所有权🎯将捕获的值移除闭包和Fn trait原创 2024-04-02 12:38:10 · 926 阅读 · 0 评论 -
【Rust】——编写自动化测试(一)
🎯编写和运行测试🎃测试(函数)🎃解剖测试函数🎯 断言(Assert)🎃使用assert!宏检查测试结果🎃使用assert_eq!和assert_ne!测试相等性🎯自定义错误信息🎯使用should_panic检查恐慌🎃让should_panic更加精准🎯在测试中使用Result原创 2024-03-29 10:24:05 · 2943 阅读 · 124 评论 -
【Rust】——提取函数消除重复代码和泛型
🎯提取函数消除重复代码🎯泛型🎃函数定义中的泛型🎃Struct定义中的泛型🎃Enum定义中的泛型🎃方法定义中的泛型🎃泛型代码的功能原创 2024-03-26 15:58:34 · 2006 阅读 · 86 评论 -
【Rust】——什么时候应该用panic!
🎯总体原则🎯编写示例、原型代码、测试🎯有时候你比编译器掌握更多信息🎯错误处理的指导性建议✨场景建议✨为验证创建自定义类型原创 2024-03-25 15:04:23 · 1072 阅读 · 0 评论 -
【Rust】——String集合
🎯Rust开发者经常被字符串困扰的原因🎯字符串是什么🎯创建字符串🎯更新String✨使用push_str和push附加字符串✨如何拼接字符串🎯索引字符串✨内部表示✨字节、标量值、字形簇🎯字符串切割slice🎯遍历string🎯字符串不简单原创 2024-03-21 12:32:20 · 2420 阅读 · 82 评论 -
【Rust】——Rusult与可恢复的错误
🎯Ruslt枚举🎯匹配不同的错误🎯unwrap🎯expect🎯传播错误🎯?运算符🎯?与from函数🎯?运算符只能返回Result函数🎯?运算符与main函数原创 2024-03-20 14:09:39 · 689 阅读 · 1 评论 -
【Rust】——panic!和不可恢复的错误
🎯Rust错误处理概述🎯不可恢复与panic!🎯使用panic的backtrace原创 2024-03-19 20:14:42 · 1171 阅读 · 13 评论 -
【Rust】——HashMap
🎯HashMap🎯创建HashMap🎯HashMap和所有权🎯访问HashMap中的值🎯更新HashMap✨覆盖值✨只有K不对应任何值的情况下,才插入V✨基于现有V更新V🎯Hash函数原创 2024-03-18 19:05:52 · 1470 阅读 · 12 评论 -
【Rust】——枚举与模式匹配
🎯定义枚举🎯Option枚举🥽类似Null概念的枚举—Option🎯控制流运算符-match🥽绑定值得模式:🥽匹配Option🥽match匹配必须穷举所有的可能🥽通配符🎯if let原创 2024-03-14 13:04:54 · 2994 阅读 · 102 评论 -
【Rust】——Vector集合
🎯创建vector🎯更新Vector🎯删除Vector🎯读取Vector元素🎯所有权和借用规则🎯使用enum来存储多种数据类型原创 2024-03-13 11:45:28 · 1421 阅读 · 3 评论 -
【Rust】——use关键字
目录🎯use关键字🎯惯用use路径🎯使用as关键字起别名🎯使用pub use 重新导出名称🎯使用外部包(package)🎯使用嵌套路径清理大量使用的use语句原创 2024-03-12 13:09:00 · 969 阅读 · 4 评论 -
【Rust】——路径(Path)
【Rust】——路径(Path)目录🎯路径🎯私有边界🎯使用pub关键字暴露路径🎯super关键字🎯创建公共的结构体原创 2024-03-11 12:35:14 · 1403 阅读 · 11 评论 -
【Rust】——package、crate、定义Module
🎯Rust代码组织🎯package和crate🎯Cargo的惯例🎯Crate的作用🎯定义module来控制作用域和私有性原创 2024-03-05 11:49:46 · 981 阅读 · 1 评论 -
【Rust】——切片
🎯前言🎯引入字符串切片🎯用字符串切片🎯字符串字面值原创 2024-03-04 13:29:23 · 876 阅读 · 1 评论 -
【Rust】——结构体struct
目录🎯定义并实例化struct🥽什么是struct🥽定义struct🥽实例化struct🎯struct例子🎯struct🥽struct方法🥽方法调用的运算符🥽方法参数🥽关联函数🥽多个impl块原创 2024-03-01 11:46:15 · 2357 阅读 · 42 评论 -
【Rust】——函数(所有权)以及借用或引用
🎯函数与所有权🎯返回值与所有权🎯借用与引用悬垂引用:原创 2024-02-29 12:52:18 · 940 阅读 · 9 评论