1K+ 次查看
Rust 中的结构体包含额外的可见性级别。开发人员可以根据自己的需要修改这些级别。在正常情况下,Rust 中结构体的可见性是私有的,可以通过使用 pub 修饰符将其设为公有。需要注意的是,只有当我们尝试从定义它的模块外部访问结构体字段时,这种可见性才有意义。当我们隐藏结构体的字段时,我们只是试图封装数据。示例请考虑以下示例:mod my { // A ... 阅读更多
189 次查看
Rust 中的切片是相同数据类型 T 的元素集合,但与数组不同,它不需要在编译时知道其长度。在 Rust 中,切片是一个双字对象,其中第一个字实际上是指向数据的指针,第二个字只是切片的长度。切片比数组更安全,并且允许高效地访问数组而不进行复制。切片是从数组、字符串创建的。它们可以是可变的,也可以是不变的。切片通常指的是数组或... 阅读更多
140 次查看
Rust 中出现两种类型的错误,一种是可恢复错误,另一种是不可恢复错误。我们借助 panic! 宏处理不可恢复错误,而 Result 类型和其他方法则帮助处理可恢复错误。Result 类型是 Option 类型的一个更好的版本,它只描述可能的错误,而不是可能的缺失。签名Result 类型的签名是 Result < T, E>,它只有两种结果。它们是: Ok(T):找到一个元素 T。Err(E):找到一个带有元素 E 的错误。Rust 还提供了一些不同的方法,我们可以将它们与... 阅读更多
65 次查看
处理运行时传递的参数是任何编程语言的关键特性之一。在 Rust 中,我们借助 std::env::args 访问这些参数,它返回一个迭代器,为每个传递的参数提供一个字符串。示例请考虑以下示例:use std::env; fn main() { let args: Vec = env::args().collect(); // 第一个参数是用于调用程序的路径。 println!("我的当前目录路径是 {}。", args[0]); println!("我获得了 {:?} 个参数:{:?}。", args.len() - 1, &args[1..]); }我们可以这样传递参数:./args 1 2 3 4 ... 阅读更多
368 次查看
Rust 中的 Path 结构体用于表示底层文件系统中的文件路径。还需要注意的是,Rust 中的 Path 不是表示为 UTF-8 字符串;而是存储为字节向量 (Vec)。示例请考虑以下示例: 实时演示use std::path::Path; fn main() { // 从 `&'static str` 创建一个 `Path` let path = Path::new("."); // `display` 方法返回一个 `Show`able 结构 let display = path.display(); // 检查路径是否存在 if path.exists() { println!("{} 存在", display); } ... 阅读更多
222 次查看
Rust 中的错误处理是借助 panic! 宏完成的。Rust 中还有其他处理错误的方法,但 panic 是独一无二的,因为它用于处理不可恢复的错误。当我们执行 panic! 宏时,整个程序从堆栈中展开,因此它会退出。由于程序退出方式,我们通常使用 panic! 处理不可恢复的错误。语法调用 panic 的语法如下:panic!("遇到错误");我们通常在括号内传递自定义消息。示例请将以下代码作为参考: 实时演示fn drink(beverage: ... 阅读更多
236 次查看
Rust 为我们提供了 match 关键字,可用于模式匹配。它类似于 C 语言中的 switch 语句,并且会评估第一个匹配的分支。示例请考虑以下示例:fn main() { let number = 17; println!("告诉我关于 {} 的信息", number); match number { 1 => println!("一!") 2 | 3 | 5 | 7 | 11 => println!("素数"), 13..=19 => println!("青少年"), _ => println!("不特殊"), } }在上面的示例中,我们试图使用... 阅读更多
159 次查看
Rust 提供了一个 loop 关键字,允许我们运行无限循环。loop 关键字指示的无限循环可以通过使用 break 关键字来中断。此外,我们还可以借助 continue 关键字退出迭代并继续无限循环。示例请考虑以下示例: 实时演示fn main() { let mut count = 0u32; println!("无限循环开始!!"); // 无限循环 loop { count += 1; if count == 4 { println!("四"); ... 阅读更多
405 次查看
Rust 还为我们提供了 HashSet 数据结构,主要用于确保数据结构中不存在重复值。如果我们尝试将一个已存在于 HashSet 中的新值插入其中,则先前值会被我们插入的新值覆盖。除了关键特性外,HashSet 还用于执行以下操作:并集 - 提取两个集合中所有唯一的元素。差集 - 获取第一个集合中存在但在第二个集合中不存在的所有元素。交集 - 获取... 阅读更多
526 次查看
HashMap 是一种重要的数据结构,因为它允许我们以键值对的形式存储数据。在 Rust 中,HashMap 通过键存储值。HashMap 的键可以是布尔值、整数、字符串或任何其他实现了 Eq 和 Hash 特征的数据类型。HashMap 的大小可以增长,当空间变得过于庞大时,它们也可以自行缩小。我们可以通过多种方式创建 HashMap,可以使用 HashMap::with_capacity(uint) 或 HashMap::new()。以下是 HashMap 支持的方法:insert()get()remove()iter()示例让我们来看一个示例,其中我们构建一个 HashMap 并使用上面列出的所有这些操作。请考虑以下示例: 实时演示use std::collections::HashMap; fn ... 阅读更多