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
2.12.2 模块 Module 模块 Module 在本章节,我们将深入讲讲 Rust 的代码构成单元:模块。使用模块可以将包中的代码按照功能性进行重组,最终实现更好的可读性及易用性。同时,我们还能非常灵活地去控制代码的可见性,进一步强化 Rust 的安全性。 1. 创建嵌套模块 使用 cargo new --lib restaurant 创建一个小餐馆,注意,这里创建的是一个库类型的 Package,然后将以下代 2025-01-05 rust > rust圣经 > rust基础 #rust
2.12.1 包 Crate 包和 Package 当读者按照章节顺序读到本章时,意味着你已经几乎具备了参与真实项目开发的能力。但是真实项目远比我们之前的 cargo new 的默认目录结构要复杂,好在,Rust 为我们提供了强大的包管理工具: 项目(Package):可以用来构建、测试和分享包 工作空间(WorkSpace):对于大型项目,可以进一步将多个包联合在一起,组织成工作空间 包(Crate):一个由 2025-01-05 rust > rust圣经 > rust基础 #rust
2.12 包和模块 包和模块 当工程规模变大时,把代码写到一个甚至几个文件中,都是不太聪明的做法,可能存在以下问题: 单个文件过大,导致打开、翻页速度大幅变慢 查询和定位效率大幅降低,类比下,你会把所有知识内容放在一个几十万字的文档中吗? 只有一个代码层次:函数,难以维护和协作,想象一下你的操作系统只有一个根目录,剩下的都是单层子目录会如何:disaster 容易滋生 Bug 同时,将大的代码文件 2025-01-05 rust > rust圣经 > rust基础 #rust
2.11.2 返回值 Result 和 ? 可恢复的错误 Result 还记得上一节中,提到的关于文件读取的思考题吧?当时我们解决了读取文件时遇到不可恢复错误该怎么处理的问题,现在来看看,读取过程中,正常返回和遇到可以恢复的错误时该如何处理。 假设,我们有一台消息服务器,每个用户都通过 websocket 连接到该服务器来接收和发送消息,该过程就涉及到 socket 文件的读写,那么此时,如果一个用户的读写发生了错误,显然不能直接 2025-01-05 rust > rust圣经 > rust基础 #rust
2.11.1 panic 深入剖析 panic 深入剖析 在正式开始之前,先来思考一个问题:假设我们想要从文件读取数据,如果失败,你有没有好的办法通知调用者为何失败?如果成功,你有没有好的办法把读取的结果返还给调用者? 1. panic! 与不可恢复错误 上面的问题在真实场景会经常遇到,其实处理起来挺复杂的,让我们先做一个假设:文件读取操作发生在系统启动阶段。那么可以轻易得出一个结论,一旦文件读取失败,那么系统启动也将失败,这 2025-01-05 rust > rust圣经 > rust基础 #rust
2.11 返回值和错误处理 返回值和错误处理 1. Rust 的错误哲学 错误对于软件来说是不可避免的,因此一门优秀的编程语言必须有其完整的错误处理哲学。在很多情况下,Rust 需要你承认自己的代码可能会出错,并提前采取行动,来处理这些错误。 Rust 中的错误主要分为两类: 可恢复错误,通常用于从系统全局角度来看可以接受的错误,例如处理用户的访问、操作等错误,这些错误只会影响某个用户自身的操作进程,而不会对系 2025-01-05 rust > rust圣经 > rust基础 #rust
2.10 认识生命周期 认识生命周期 生命周期,简而言之就是引用的有效作用域。在大多数时候,我们无需手动的声明生命周期,因为编译器可以自动进行推导,用类型来类比下: 就像编译器大部分时候可以自动推导类型 <-> 一样,编译器大多数时候也可以自动推导生命周期 在多种类型存在时,编译器往往要求我们手动标明类型 <-> 当多个生命周期存在,且编译器无法推导出某个引用的生命周期时,就需要我们 2025-01-05 rust > rust圣经 > rust基础 #rust