4.3 深入类型 深入类型 Rust 是强类型语言,同时也是强安全语言,这些特性导致了 Rust 的类型注定比一般语言要更深入也更困难。 本章将深入讲解一些进阶的 Rust 类型以及类型转换。 2025-02-05 rust > rust圣经 > rust高级进阶 #rust
4.2.2 迭代器 Iterator 迭代器 Iterator 迭代器允许我们迭代一个连续的集合,例如数组、动态数组 Vec、HashMap 等,在此过程中,只需关心集合中的元素如何处理,而无需关心如何开始、如何结束、按照什么样的索引去访问等问题。 1. For 循环与迭代器 从用途来看,迭代器跟 for 循环颇为相似,都是去遍历一个集合,但是实际上它们存在不小的差别,其中最主要的差别就是:是否通过索引来访问集合。 Ru 2025-02-05 rust > rust圣经 > rust高级进阶 #rust
4.2.1 闭包 Closure 闭包 Closure 闭包这个词语由来已久,自上世纪 60 年代就由 Scheme 语言引进之后,被广泛用于函数式编程语言中,进入 21 世纪后,各种现代化的编程语言也都不约而同地把闭包作为核心特性纳入到语言设计中来。那么到底何为闭包? 闭包是一种匿名函数,它可以赋值给变量也可以作为参数传递给其它函数,不同于函数的是,它允许捕获调用者作用域中的值,例如: 123456fn main() 2025-02-05 rust > rust圣经 > rust高级进阶 #rust
4.2 函数式编程:闭包、迭代器 函数式编程 罗马不是一天建成的,编程语言亦是如此,每一门编程语言在借鉴前辈的同时,也会提出自己独有的特性,Rust 即是如此。当站在巨人肩膀上时,一个人所能看到的就更高更远,恰好,我们看到了函数式语言的优秀特性,例如: 使用函数作为参数进行传递 使用函数作为函数返回值 将函数赋值给变量 关于函数式编程到底是什么的争论由来已久,本章节并不会踏足这个泥潭,因此我们在这里主要关注的是 2025-02-05 rust > rust圣经 > rust高级进阶 #rust
4.1.2 静态生命周期 static 和 T static &'static 和 T: 'static Rust 的难点之一就在于它有不少容易混淆的概念,例如 &str 、str 与 String, 再比如本文标题那两位。不过与字符串也有不同,这两位对于普通用户来说往往是无需进行区分的,但是当大家想要深入学习或使用 Rust 时,它们就会成为成功路上的拦路虎了。 'static 在 Rust 中是相当常见的,例如字符串字面值就具有 2025-02-05 rust > rust圣经 > rust高级进阶 #rust
4.1 生命周期 深入生命周期 1. 不太聪明的生命周期检查 在 Rust 语言学习中,一个很重要的部分就是阅读一些你可能不经常遇到,但是一旦遇到就难以理解的代码,这些代码往往最令人头疼的就是生命周期,这里我们就来看看一些本以为可以编译,但是却因为生命周期系统不够聪明导致编译失败的代码。 1.1 例子 1 12345678910111213141516#[derive(Debug)]struct Foo; 2025-02-05 rust > rust圣经 > rust高级进阶 #rust
3. 文件搜索工具 1. 实现基本功能 对于一个文件查找命令而言,首先得指定文件和待查找的字符串,它们需要用户从命令行给予输入,然后我们在程序内进行读取。 1.1 接收命令行参数 创建一个新的项目 minigrep 123cargo new minigrep Created binary (application) `minigrep` project$ cd minigrep 传入文件路径和待搜索 2025-02-05 rust > rust圣经 > mini-grep #rust
2.14 格式化输出 格式化输出 提到格式化输出,可能很多人立刻就想到 "{}",但是 Rust 能做到的远比这个多的多,本章节我们将深入讲解格式化输出的各个方面。 1. 满分初印象 先来一段代码,看看格式化输出的初印象: 1234567println!("Hello"); // => "Hello"printl 2025-01-05 rust > rust圣经 > rust基础 #rust
2.13 注释和文档 注释和文档 在之前的章节我们学习了包和模块如何使用,在此章节将进一步学习如何书写文档注释,以及如何使用 cargo doc 生成项目的文档,最后将以一个包、模块和文档的综合性例子,来将这些知识融会贯通。 1. 注释的种类 在 Rust 中,注释分为三类: 代码注释,用于说明某一块代码的功能,读者往往是同一个项目的协作开发者 文档注释,支持 Markdown,对项目描述、公共 AP 2025-01-05 rust > rust圣经 > rust基础 #rust
2.12.3 使用 use 引入模块及受限可见性 使用 use 及受限可见性 如果代码中,通篇都是 crate::front_of_house::hosting::add_to_waitlist 这样的函数调用形式,我不知道有谁会喜欢,也许靠代码行数赚工资的人会很喜欢,但是强迫症肯定受不了,悲伤的是程序员大多都有强迫症。。。 因此我们需要一个办法来简化这种使用方式,在 Rust 中,可以使用 use 关键字把路径提前引入到当前作用域中 2025-01-05 rust > rust圣经 > rust基础 #rust