《Rust权威指南》学习笔记
无
天了噜Rex
这个作者很懒,什么都没留下…
展开
-
《Rust权威指南》第18章_模式匹配_草稿
所有可以使用模式的场合match分支if let条件表达式while let条件循环for循环let语句函数的参数可失败性:模式是否会匹配失败模式语法匹配字面量匹配命名变量多重模式使用…来匹配值区间使用解构来分解值解构结构体解构枚举解构嵌套的结构体和枚举解构结构体和元组忽略模式中的值使用_忽略整个值使用嵌套的_忽略值得某些部分通过以_开头的名称来忽略未使用的变量使用…忽略值得剩余部分使用匹配首尾添加额外条件@绑定fn main().原创 2021-09-23 16:32:20 · 323 阅读 · 0 评论 -
《Rust权威指南》第17章_Rust的面向对象编程特性_草稿
面向对象语言的特性对象包含数据和行为封装实现细节作为类型系统和代码共享机制的继承使用trait对象来存储不同类型的值为共有行为定义一个trait实现traittrait对象会执行动态派发trait对象必须保证对象安全实现一种面向对象的设计模式定义Post并新建一个处于草稿状态下的新实例存储文章内容的文本确保草稿的可读内容为空请求审批文章并改变其状态添加approve方法来改变content的行为状态模式的权衡取舍将状态和行为编码成类型postm.原创 2021-09-11 17:58:12 · 208 阅读 · 0 评论 -
《Rust权威指南》第16章_无畏并发_草稿
使用线程同时运行代码使用spawn创建新线程使用join句柄等待所有线程结束在线程中使用move闭包使用消息传递在线程间转移数据通道和所有权转移发送多个值并观察接收者的等待过程通过克隆发送者创建多个生产者共享状态的并发互斥体一次只允许一个线程访问数据Mutex的接口在多个线程间共享Mutex多线程与多重所有权原子引用计数ArcRefCell/Rc和Mutex/Arc之间的相似性使用Sync trait和Send trait对并发进行拓展允许线程间转.原创 2021-09-09 21:12:14 · 243 阅读 · 0 评论 -
《Rust权威指南》第8章_通用集合类型_草稿
使用动态数组存储多个值创建动态数组更新动态数组销毁动态数组时也会销毁其中元素读取动态数组中的元素遍历动态数组中的值使用枚举来存储多个类型的值使用字符串存储UTF-8编码的文本字符串是什么创建一个新的字符串更新字符串使用+运算符或format!宏来拼接字符串字符串索引内部布局字节、标量值及字形簇!天呐!字符串切片遍历字符串的方法字符串的确没那么简单在哈希映射中存储键值对创建一个新的哈希映射哈希映射与所有权访问哈希映射中的值更新哈希映射.原创 2021-08-14 11:50:03 · 140 阅读 · 1 评论 -
《Rust权威指南》第9章_错误处理_草稿
不可恢复错误与panic!使用panic!产生的回溯信息可恢复错误与Result匹配不同的错误失败时触发panic的快捷方式:unwarp和expect传播错误传播错误的快捷方式:?运算符?运算符只能被用于返回Result的函数要不要使用panic!示例、原型和测试当你比编译器拥有更多信息错误处理的指导原则创建自定义类型来进行有效性验证//Powershell输入// $env:RUST_TRACE=1;cargo run//来显示回溯信息use.原创 2021-08-18 23:00:42 · 110 阅读 · 0 评论 -
《Rust权威指南》第10章_泛型、trait与生命周期_草稿
通过将代码提取为函数来减少重复工作泛型数据类型在函数定义中在结构体定义中在枚举定义中在方法定义中泛型代码的性能问题trait: 定义共享行为定义trait为类型实现trait默认实现使用trait作为参数trait约束通过+语法来指定多个trait约束使用where从句来简化trait约束返回实现了trait的类型使用trait约束来修复largest函数使用trait约束来有条件地实现方法使用生命周期保证引用的有效性使用生命周期来避免悬垂引用借.原创 2021-08-21 23:31:53 · 276 阅读 · 0 评论 -
《Rust权威指南》第11章_编写自动化测试_草稿
如何编写测试测试函数的构成使用assert!宏检测结果使用assert_eq!和assert_ne!宏判断相等性添加自定义的错误提示信息使用should_panic检查panic使用Result<T, E>编写测试控制测试的运行方式并行或串行地进行测试显示函数输出只运行部分特定名称的测试运行单个测试通过过滤名称来运行多个测试通过显式指定来忽略某些测试测试的组织结构单元测试测试模块和#[cfg(test)]测试私有函数集成测试te.原创 2021-08-23 19:38:21 · 123 阅读 · 0 评论 -
《Rust权威指南》第12章_一个 I/O 项目:构建一个命令行程序_草稿
main.rsuse std::env;use std::process;use minigrep::Config;fn main() { let args: Vec<String> = env::args().collect(); let config = Config::new(&args).unwrap_or_else(|err| { eprintln!("Problem parsing arguments: {}", err);原创 2021-08-27 03:00:18 · 115 阅读 · 0 评论 -
《Rust权威指南》第13章_函数式语言特性:迭代器与闭包_草稿
闭包:能够捕获环境的匿名函数使用闭包来创建抽象化的程序行为使用函数来进行重构使用闭包存储代码来进行重构闭包的类型推断和类型标注使用泛型参数和Fn trait来存储闭包Cacher实现的局限性使用闭包捕获上下文环境使用迭代器处理元素序列Iterator trail和next方法消耗迭代器的方法生成其他迭代器的方法使用闭包捕获环境使用Iterator trait来创建自定义迭代器使用Counter迭代器的next方法使用其他的Iterator trait方法.原创 2021-08-28 13:02:20 · 139 阅读 · 0 评论 -
《Rust权威指南》第14章_进一步认识Cargo及crates.io_草稿
使用发布配置来定制构建将包发布到crates.io上编写有用的文档注释常用的文档注释区域将文档注释用作测试在条目内部编写注释使用pub use来导出合适的公共API创建crates.io账户为包添加元数据发布到crates.io发布已有包的新版本使用cargo yank命令从cargo.io上移除版本Cargo工作空间创建工作空间在工作空间中创建第二个包在工作空间中依赖外部包为工作空间增加测试使用cargo install从crates.io上安装.原创 2021-08-29 11:00:15 · 147 阅读 · 0 评论 -
《Rust权威指南》第15章_智能指针_草稿
使用Box在堆上分配数据使用Box在堆上存储数据使用装箱定义递归类型有关链接列表的更多信息计算一个非递归类型的大小使用Box将递归类型的大小固定下来通过Deref trait将智能指针视作常规引用使用解引用运算符跳转到指针指向的值把Box当成引用来操作定义我们自己的智能指针通过实现Deref trait来将类型视作引用函数和方法的隐式解引用转换解引用转换与可变性借助Drop trait在清理时运行代码使用std::men::drop提前丢弃值基于引用计.原创 2021-08-30 16:38:39 · 191 阅读 · 0 评论