我已经写了几篇关于 Rust 的文章,包括(最近的)我在 Rust 中最常用的 7 个关键字,我在其中承诺会写一篇后续文章。关键字文章讨论了 std 库 中的关键字,在本文中,我将介绍 Rust prelude 中的一些函数。
当您在 Rust 中创建一个文件并编译它时,您可以(并且经常需要)导入外部模块,通常使用 use
或 extern
关键字。然而,Rust 为您做了一件好事,那就是导入一组有用的模块,而无需您提出要求。这被称为标准 prelude。像往常一样,Rust 文档对 此内容有很好的信息。
以下是我从标准 prelude 中选出的一些我最喜欢的函数:我一直使用的有用的函数,以及一些揭示 Rust 如何“思考”世界的函数。
- clone() – 有时您需要在某个地方使用变量,而 Rust 的内存管理规则使这变得困难。幸运的是,在实现了
std::clone::Clone
trait 的地方(几乎所有地方都实现了),您可以复制到一个新变量。不要仅仅为了绕过 Rust 的内存管理而这样做,它是为了帮助您,但是当您实际上需要某个东西的新副本时,它可能非常有用。 - format!() – 好的,正式来说,这是一个宏而不是一个函数,但它非常有用。您可能知道并使用
println!()
,它用于打印到 stdout。format!()
对于您不想立即输出的字符串执行几乎相同的操作。 - is_ok() – 老实说,这只是我谈论
std::result::Result
的借口,它非常有用,允许您创建和访问成功 (Ok
) 或失败 (Err
) 结果。is_ok()
函数会告诉您您拥有的是否是 Ok 结果(并记住“k”是小写——可能是我编写 Rust 时最常见的语法错误)。为了正确理解 Rust,您需要理解Result
。它被广泛使用,您也应该使用它。 - is_some() – 与 Result 类似,
std::option::Option
是您在编写 Rust 时可能会经常使用的东西。鉴于没有像您在许多其他语言中使用的Null
等价物,当您没有生成要返回的值时,您可以做什么?答案是您可以使用Option
,您可以为其提供None
值;在其他情况下,您可以在Some()
包装器中提供一个值。is_some()
函数检查是否有值——如果有,您可以使用unwrap()
函数来访问它(见下文)。与Result
一样,习惯于使用Option
,因为您会在各处看到它。 - iter() – 许多不同的集合可以被迭代,
iter()
函数允许您非常简单地访问所有值。您有时可能想使用相关的函数into_iter()
和iter_mut()
(用于可变值,不足为奇),但iter()
是您最常用的,并且您可以将各种有用的函数链接到它上面。 - panic!() – 有时您的程序会获得不应该获得的输入或生成不应该生成的输出。当
std::result::Result
不够好,并且您无法通过执行堆栈传播错误时,因为这不是应该处理的那种错误,您可以强制您的程序使用panic!()
(如果我诚实的话,这是另一个宏)停止,并添加一条错误消息以提供更多信息。 - unwrap() – 如果您有一个
std::option::Option
或一个std::result::Result
,并且您想访问它包含的内容,那么您将需要使用unwrap()
,如果出现问题,它会 panic(如果您想能够添加特定消息,则使用expect()
)。
这是一篇相当基础的文章,但如果它对开始了解 Rust 的人们有用,那么我很高兴。我计划继续研究 Rust 中一些更基本的语言组件和一些基本的陷阱,所以请密切关注。
本文最初发表在 Alice, Eve, and Bob 上,并经作者许可转载。
评论已关闭。