找到 34423 篇文章 关于编程

Rust 编程中的 Panic! 宏

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:38:40

223 次浏览

在 Rust 中处理严重错误是借助 panic! 宏完成的。Rust 中还有其他方法可以处理错误,但 panic! 宏是独一无二的,因为它用于处理不可恢复的错误。当我们执行 panic! 宏时,整个程序从堆栈中展开,因此它会退出。由于程序退出方式,我们通常将 panic! 用于不可恢复的错误。语法调用 panic! 宏的语法如下:panic!("An error was encountered");我们通常在括号内传递自定义消息。示例请参考以下代码: 在线演示fn drink(beverage: ... 阅读更多

Rust 编程中的 Match

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:32:57

237 次浏览

Rust 为我们提供了 match 关键字,可用于模式匹配。它类似于 C 语言中的 switch 语句,并且第一个匹配的分支会被执行。示例请考虑以下示例:fn main() {    let number = 17;    println!("Tell me about {}", number);    match number {       1 => println!("One!")       2 | 3 | 5 | 7 | 11 => println!("A prime"),       13..=19 => println!("A teen"),       _ => println!("Ain't special"),    } }在上面的示例中,我们尝试使用 ... 阅读更多

Rust 编程中的 Loop 关键字

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:31:52

159 次浏览

Rust 提供了一个 loop 关键字,允许我们运行无限循环。loop 关键字指示的无限循环可以通过使用 break 关键字来中断。此外,我们可以使用 continue 关键字退出迭代并继续无限循环。示例请考虑以下示例: 在线演示fn main() {    let mut count = 0u32;    println!("Infinite loop begins!!");    // 无限循环    loop {       count += 1;       if count == 4 {          println!("four");         ... 阅读更多

Rust 编程中的 HashSet

Mukul Latiyan
更新于 2021 年 4 月 3 日 13:04:16

406 次浏览

Rust 还为我们提供了 HashSet 数据结构,当我们希望确保数据结构中不存在重复值时,主要使用它。如果我们尝试将一个已经在 HashSet 中存在的新值插入到其中,那么之前的值会被我们插入的新值覆盖除了关键特性外,HashSet 还用于执行以下操作:union - 提取两个集合中的所有唯一元素。difference - 获取存在于第一个集合中但不存在于第二个集合中的所有元素。intersection - 获取 ... 阅读更多

Rust 编程中的 HashMap

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:29:00

527 次浏览

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 ... 阅读更多

Rust 编程中的 From 和 Into 特征

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:28:03

264 次浏览

From 和 Into 是 Rust 为我们提供的两个特征。它们在内部是相关的。From 特征当我们想要定义一个特征来描述如何从任何其他类型创建自身时,我们会使用 From 特征。它提供了一种非常简单的机制,我们可以通过它在多种类型之间进行转换。例如,我们可以轻松地将 str 转换为 String。示例请考虑以下示例: 在线演示fn main() {    let my_str = "hello";    let my_string = String::from(my_str);    println!("{}", my_string); }输出hello我们甚至可以转换我们自己的类型。示例请考虑以下示例:use std::convert::From; #[derive(Debug)] struct Num {    value: i64, } impl ... 阅读更多

Rust 编程中的文件操作

Mukul Latiyan
更新于 2021 年 4 月 3 日 12:50:15

255 次浏览

文件操作通常包括 I/O 操作。Rust 为我们提供了不同的方法来处理所有这些操作。打开Rust 提供了一个 open 静态方法,我们可以使用它以只读模式打开文件。示例请考虑以下代码:use std::fs::File; use std::io::prelude::*; use std::path::Path; fn main() {    // 创建目标文件的路径    let path = Path::new("out.txt");    let display = path.display();    let mut file = match File::open(&path) {       Err(why) => panic!("unable to open {}: {}", display, why),       Ok(file) => file,    };    let mut s = String::new();    match ... 阅读更多

Rust 编程中的枚举

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:25:50

125 次浏览

枚举在某些情况下非常有用。在 Rust 中,我们使用枚举,因为它们允许我们定义一个可能属于几种不同变体的类型。枚举用关键字 enum 声明。示例 在线演示#![allow(unused)] #[derive(Debug)] enum Animal {    Dog,    Cat, } fn main() {    let mut b : Animal = Animal::Dog;    b = Animal::Cat;    println!("{:?}", b); }输出Cat零变体枚举Rust 中的枚举也可以具有零个变体,因此称为零变体枚举。由于它们没有任何有效值,因此无法实例化。零变体枚举等效于 never ... 阅读更多

Rust 编程中的常量

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:09:33

172 次浏览

Rust 为我们提供了两种类型的常量。它们是:const - 一个不可更改的值static - 具有静态生命周期的可能可变的值。如果我们尝试为一个已经声明的 const 值分配另一个值,编译器将抛出一个错误。示例请考虑以下示例: 在线演示static LANGUAGE: &str = "TutorialsPoint-Rust"; const THRESHOLD: i32 = 10; fn is_small(n: i32) -> bool {    n < THRESHOLD } fn main() {    // 错误!无法修改 `const`。    THRESHOLD = 5;    println!("Everything worked fine!"); }在上面的代码中,我们试图修改一个变量的值,该变量是 ... 阅读更多

Rust 编程中的通道

Mukul Latiyan
更新于 2021 年 4 月 3 日 14:06:35

631 次浏览

通道是允许两个或多个线程之间进行通信的媒介。Rust 提供了异步通道,使线程之间能够进行通信。Rust 中的通道允许两个端点之间进行单向通信流。这两个端点是发送方和接收方。示例请考虑以下示例:use std::sync::mpsc::{Sender, Receiver}; use std::sync::mpsc; use std::thread; static NTHREADS: i32 = 3; fn main() {    let (tx, rx): (Sender, Receiver) = mpsc::channel();    let mut children = Vec::new();    for id in 0..NTHREADS {       let thread_tx = tx.clone();       let child = thread::spawn(move || {   ... 阅读更多

广告

© . All rights reserved.