我的 Rust 顶级 7 个关键词

从 Rust 标准库中学习一些有用的关键词。
51 位读者喜欢这篇文章。
Rustacean t-shirt

Mike Bursell (CC BY-SA 4.0)

我已经使用 Rust 几个月了,写的代码比我预期的要多得多——虽然其中很多代码在我学习、改进我正在编写的内容以及将一些更复杂的任务扩展到我最初的意图之外时被丢弃了。

我仍然喜欢它,并认为谈论一些在 Rust 中反复出现的重要关键词可能会很好。我将提供我对它们的功能、为什么你需要考虑如何使用它们以及任何其他有用的东西的个人总结,特别是对于刚接触 Rust 或来自另一种语言(如 Java;请参阅我的文章 为什么我喜欢作为 Java 程序员学习 Rust)的人来说。

事不宜迟,让我们开始吧。获取更多信息的好地方始终是官方 Rust 文档——你可能需要从 std 库 开始。

  1. const – 你可以使用 const 声明常量,而且你应该这样做。这不是火箭科学,但请使用 const 声明,如果你要在不同的模块中使用常量,那么请做正确的事情并创建一个 lib.rs 文件(Rust 默认文件),你可以在其中将所有常量放入一个命名良好的模块中。我曾经遇到过不同模块中不同文件的 const 变量名(和值!)冲突,仅仅是因为我太懒了,除了在文件之间剪切和粘贴之外什么都不做,而我本可以通过创建一个共享模块来节省大量工作。
  2. let – 你并不总是需要使用 let 语句声明变量,但是当你这样做时,你的代码会更清晰。更重要的是,如果可以,请始终添加类型。Rust 会尽力猜测它应该是什么类型,但它可能并不总是在运行时这样做(在这种情况下,Cargo,编译器,会告诉你),或者它甚至可能不会做你期望的事情。在后一种情况下,Cargo 抱怨你从中赋值的函数(例如)与声明不匹配,总是比 Rust 试图帮助你做错事,最终让你花费大量时间在其他地方调试要简单得多。
  3. match – match 对我来说是新的,我喜欢它。它与其他语言中的“switch”不太相似,但在 Rust 中被广泛使用。它使代码易于阅读,如果做了一些愚蠢的事情(例如遗漏了可能的案例),Cargo 会很好地警告你。我的通用经验法则是,在我管理不同的选项或进行分支时,我会问我是否可以使用 match。如果可以,我会使用。
  4. mut – 在声明变量时,如果它在初始化后会发生更改,那么你需要将其声明为可变的。一个常见的错误是在它没有更改时声明为可变的——但是编译器会警告你。如果你收到 Cargo 的警告,说一个可变变量在你认为它更改时没有更改,那么你可能需要检查变量的作用域,并确保你正在使用正确的版本。
  5. return – 我实际上很少使用 return,它是用于从函数返回值,因为它通常更简单、更清晰地读取,如果你只是在函数的末尾将值(或提供返回值的函数)作为最后一行提供。警告:你经常忘记在此行末尾省略分号;如果你这样做,编译器会不高兴的。
  6. unsafe – 这正如其名称所示:如果你想做 Rust 无法保证内存安全的事情,那么你需要使用这个关键词。我绝对不打算现在或将来声明我的任何 Rust 代码为 unsafe;Rust 如此友好的原因之一是因为它阻止了这种黑客行为。如果你真的需要这样做,请再三考虑,然后再重新设计。除非你是非常底层的系统程序员,避免 unsafe。
  7. use – 当你想使用来自另一个 crate 的项目,例如 struct、变量、函数等时,那么你需要在你将要使用它的块的开头声明它。另一个常见的错误是这样做但未能将 crate(最好带有最低版本号)添加到 Cargo.toml 文件中。

我知道这篇文章不是我写过的最复杂的文章,但它是我在开始学习 Rust 时会欣赏的那种文章。我计划创建关于关键函数和其他 Rust 必备知识的类似文章:如果你有任何要求,请告诉我!


本文最初发表在 Alice, Eve, and Bob 上,并经作者许可转载。

接下来阅读什么
标签
User profile image.
自 1997 年左右以来,我一直身处开源领域,并且从那时起一直在家庭和工作中运行 (GNU) Linux 作为我的主要桌面:并非总是那么容易... 我是一名安全专家和架构师,Enarx 项目的联合创始人,目前是一家初创公司的 CEO,该公司位于

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.