当前位置: 首页 > 编程笔记 >

Rust 从模式中提取引用

廉元龙
2023-03-14
本文向大家介绍Rust 从模式中提取引用,包括了Rust 从模式中提取引用的使用技巧和注意事项,需要的朋友参考一下

示例

有时有必要仅使用引用就可以从对象中提取值(即,无需转让所有权)。

struct Token {
  pub id: u32
}

struct User {
  pub token: Option<Token>
}


fn main() {
    // 创建具有任意令牌的用户
    let user = User { token: Some(Token { id: 3 }) };

    // 让我们通过引用来借用用户
    let user_ref = &user;

    // This match expression would not compile saying "cannot move out of borrowed
    // content" because user_ref is a borrowed value but token expects an owned value.
    match user_ref {
        &User { token } => println!("User token exists? {}", token.is_some())
    }

    // 通过在我们的模式中添加“ ref”,我们指示编译器为我们提供参考
    // 而不是拥有的价值。
    match user_ref {
        &User { ref token } => println!("User token exists? {}", token.is_some())
    }

    // 我们也可以将ref与销毁相结合
    match user_ref {
        // 'ref'将允许我们通过引用访问期权内部的令牌
        &User { token: Some(ref user_token) } => println!("Token value: {}", user_token.id ),
        &User { token: None } => println!("There was no token assigned to the user" )
    }

    // 引用也可以是可变的,让我们创建另一个用户来演示这一点
    let mut other_user = User { token: Some(Token { id: 4 }) };

    // 给用户一个可变的参考
    let other_user_ref_mut = &mut other_user;

    match other_user_ref_mut {
        // 'ref mut'为我们提供了可变的引用,使我们可以直接更改包含的值。
        &mut User { token: Some(ref mut user_token) } => {
            user_token.id = 5;
            println!("New token value: {}", user_token.id )
        },
        &mut User { token: None } => println!("There was no token assigned to the user" )
    }
}

它将打印此:

User token exists? true
Token value: 3
New token value: 5
           

 类似资料:
  • 问题内容: 我需要从一个巨大的文件中提取两个匹配模式之间的特定行。 假设(文件中唯一)匹配特定内容, (文件中不唯一)匹配之后的下一个立即匹配项。然后我要提取之间的所有行,包括 样本文件内容 期望的输出 如果您能帮助我解决这个问题,将不胜感激 问题答案: 这可以是一种方法: 找到时,则使变量p = 1。 它仅在时打印行。这是通过条件完成的。如果为true,它将执行默认的awk操作,即。否则,事实并

  • 问题内容: 请原谅我的熊猫新手问题,但我有一列美国城镇和州,例如下面所示的截短的版本(出于某些奇怪的原因,该列的名称称为“ Alabama [edit]”,该列与第一个列中的0-7城镇值): 每个州的城镇均在每个州名称之下,例如,费尔班克斯(列值9)是阿拉斯加州的一个城镇。 我想要做的是根据州名称拆分城镇名称,这样我就有两列“州”和“地区名称”,其中每个州名称与每个城镇名称相关联,如下所示: 。。

  • 本文向大家介绍Rust 基本模式匹配,包括了Rust 基本模式匹配的使用技巧和注意事项,需要的朋友参考一下 示例 如果我们没有涵盖所有情况,则会出现编译器错误: 我们可以使用_默认/通配符大小写,它匹配所有内容: 此示例将打印:            

  • 本文向大家介绍Rust 绑定模式匹配,包括了Rust 绑定模式匹配的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用@以下方式将值绑定到名称: 这将打印:            

  • 所以,我遇到了这个奇怪的问题:我正在使用Woocommerce Rest API,我需要从“images”数组中获取src。 我已经尝试将图像数组保存在另一个数组中,但我不知道如何从数组中获取“src”: 输出:〔〕、〔〕、〕、〔〕和〔{id=16.0,date_created=2018-11-08T15:21:14,date _create_gmt=2018-10-08 T15:20:14,日期

  • 我正在为任何模板化的类实现一个类型提取器。示例用法如下所示: 我怎样才能解决这个问题?