我在 Rust 中最常用的 7 个函数

Rust 很有帮助地提供了一组“prelude”函数。
52 位读者喜欢这篇文章。
Ferris the crab under the sea, unofficial logo for Rust programming language

Opensource.com

我已经写了几篇关于 Rust 的文章,包括(最近的)我在 Rust 中最常用的 7 个关键字,我在其中承诺会写一篇后续文章。关键字文章讨论了 std 库 中的关键字,在本文中,我将介绍 Rust prelude 中的一些函数。

当您在 Rust 中创建一个文件并编译它时,您可以(并且经常需要)导入外部模块,通常使用 useextern 关键字。然而,Rust 为您做了一件好事,那就是导入一组有用的模块,而无需您提出要求。这被称为标准 prelude。像往常一样,Rust 文档对 此内容有很好的信息

以下是我从标准 prelude 中选出的一些我最喜欢的函数:我一直使用的有用的函数,以及一些揭示 Rust 如何“思考”世界的函数。

  1. clone() – 有时您需要在某个地方使用变量,而 Rust 的内存管理规则使这变得困难。幸运的是,在实现了 std::clone::Clone trait 的地方(几乎所有地方都实现了),您可以复制到一个新变量。不要仅仅为了绕过 Rust 的内存管理而这样做,它是为了帮助您,但是当您实际上需要某个东西的新副本时,它可能非常有用。
  2. format!() – 好的,正式来说,这是一个宏而不是一个函数,但它非常有用。您可能知道并使用 println!(),它用于打印到 stdout。format!() 对于您不想立即输出的字符串执行几乎相同的操作。
  3. is_ok() – 老实说,这只是我谈论 std::result::Result 的借口,它非常有用,允许您创建和访问成功 (Ok) 或失败 (Err) 结果。is_ok() 函数会告诉您您拥有的是否是 Ok 结果(并记住“k”是小写——可能是我编写 Rust 时最常见的语法错误)。为了正确理解 Rust,您需要理解 Result。它被广泛使用,您也应该使用它。
  4. is_some() – 与 Result 类似,std::option::Option 是您在编写 Rust 时可能会经常使用的东西。鉴于没有像您在许多其他语言中使用的 Null 等价物,当您没有生成要返回的值时,您可以做什么?答案是您可以使用 Option,您可以为其提供 None 值;在其他情况下,您可以在 Some() 包装器中提供一个值。is_some() 函数检查是否有值——如果有,您可以使用 unwrap() 函数来访问它(见下文)。与 Result 一样,习惯于使用 Option,因为您会在各处看到它。
  5. iter() – 许多不同的集合可以被迭代,iter() 函数允许您非常简单地访问所有值。您有时可能想使用相关的函数 into_iter()iter_mut()(用于可变值,不足为奇),但 iter() 是您最常用的,并且您可以将各种有用的函数链接到它上面。
  6. panic!() – 有时您的程序会获得不应该获得的输入或生成不应该生成的输出。当 std::result::Result 不够好,并且您无法通过执行堆栈传播错误时,因为这不是应该处理的那种错误,您可以强制您的程序使用 panic!()(如果我诚实的话,这是另一个宏)停止,并添加一条错误消息以提供更多信息。
  7. unwrap() – 如果您有一个 std::option::Option 或一个 std::result::Result,并且您想访问它包含的内容,那么您将需要使用 unwrap(),如果出现问题,它会 panic(如果您想能够添加特定消息,则使用 expect())。

这是一篇相当基础的文章,但如果它对开始了解 Rust 的人们有用,那么我很高兴。我计划继续研究 Rust 中一些更基本的语言组件和一些基本的陷阱,所以请密切关注。


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

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

评论已关闭。

© . All rights reserved.