我做了类似这样的事情,有效:
HeadNode HeadNode1 = new HeadNode();
Node Node1 = new Node();
Node1.X = 1;
Node1.Y = 2;
HeadNode1.Nodes.Add(Node1);
我想做这样的事情
let s = " \"".as_bytes();
let (space, quote) = (s[0], s[1]);
但它给了我错误
&[space, quote] = " \"".as_bytes();
是否可以做类似的事情?
答案 0 :(得分:4)
正如错误告诉您的那样,切片模式语法是实验性的。这意味着语义不明确或语法可能在将来发生变化。因此,您需要每晚版本的编译器并明确请求该功能:
#![feature(slice_patterns)]
fn main() {
match " \"".as_bytes() {
&[space, quote] => println!("space: {:?}, quote: {:?}", space, quote),
_ => println!("the slice lenght is not 2!"),
}
}
另请注意,您无论如何都不能只写&[space, quote] = whatever
,因为whatever
可能不是正确的长度。要使模式匹配详尽,您需要_
个案或..
个案。你试过的会给出另一个错误:
let &[space, quote] = " \"".as_bytes();
// ^ gives: error: refutable pattern in local binding: `&[]` not covered [E0005]