首页 > 解决方案 > Rust 中的 let Foo(bar) = zar 是什么?

问题描述

我正在阅读https://www.abubalay.com/blog/2018/04/08/recursive-ascent它做了一些我无法理解的事情

let Elements(array) = elements;

这个表达是什么意思?它是在创建array变量吗?呢Elements(...)!?

问候

标签: rustpattern-matching

解决方案


这是一个解构任务。它只是从结构或枚举中获取价值:

struct Elements(Vec<&'static str>);

fn main() {
    let elements = Elements(vec!["hello", "world"]);
    let Elements(array) = elements;
    println!("array: {:?}", array); // prints array: ["hello", "world"]
}

您可以在 Rust 的许多地方使用模式。即使在let 语句中。只要确保模式是无可辩驳的。


推荐阅读