小编Ema*_*röm的帖子

如何将 vec 中的 n 个项目解构为变量?

在 JavaScript 中,我可以通过以下方式解构数组:

const [first, second, ...rest] = myArray
Run Code Online (Sandbox Code Playgroud)

Rust 是否有类似的方法来实现这一目标?

如果我只想要一个元素,那很简单。我可以:

let first = my_vec[0];
Run Code Online (Sandbox Code Playgroud)

或者,如果我从字符串创建一个数组,并且只想将 i 拆分为两部分,我可以这样做并用它获取一个元组(如果我只需要将数组拆分为两部分):

let (first, second) = my_string.split_once("\n").unwrap();
Run Code Online (Sandbox Code Playgroud)

但是更一般的解构模式怎么样,我可以忽略数组的一部分并定义一些变量并准备好使用?

我期待它看起来像这样:

let [first, second, ...] = my_vec;
Run Code Online (Sandbox Code Playgroud)

或者

let [first, ..middle, second_last, last] = my_vec;
Run Code Online (Sandbox Code Playgroud)

PS:忘记 - 部分unwrap。我知道我应该处理该错误,但这不是重点。

我尝试使用匹配表达式,但没有成功。它期望数组的长度为 2。

let [first, second] = match my_vec[..] {
    [first, second] => [first, second],
    v => v,
};
Run Code Online (Sandbox Code Playgroud)

我抱怨v并说: `match` arms have incompatible types expected array `[&str; 2]`, found slice `[&str] …

vector rust destructure

2
推荐指数
1
解决办法
923
查看次数

如何修复 gRPC 和 C# 的“名称空间名称类型“故障”在名称空间中不存在”?

我定义了很多类型和方法(原始行话中的消息和服务)并陷入了这个问题。有时,当我进行更改时,我会收到此非常无用的错误消息。

The type of namespace name "Fault" does not exist in the namespace 'MyApp.MyDomain' (are you missing an assembly reference?) 
Run Code Online (Sandbox Code Playgroud)

我正在使用 Visual Studio 2017 并编译为 C#。

c# protocol-buffers visual-studio grpc

1
推荐指数
1
解决办法
2623
查看次数

标签 统计

c# ×1

destructure ×1

grpc ×1

protocol-buffers ×1

rust ×1

vector ×1

visual-studio ×1