比如:
const REQ_ID: &'static str = "1";
和
fn some_strange_method(key: Option<&str>) -> Result<&'static str, ()> {
match key {
None | Some("la") => Ok("la"),
Some("lele") => Ok("lele"),
Some("hei") => Ok("hei"),
val @ _ => Err(println_err!("Unsupported")),
}
}
1
Kilerd 2018-12-07 12:33:11 +08:00
奇葩?
请观看 Rust Book。谢谢 |
2
P0P 2018-12-07 12:34:32 +08:00 1
请看 rust 关于生命周期的资料,’ static 说明这个变量生命周期和和运行程序一样长,在程序运行时一直存在
|
3
zzgy OP 第二段的最后一行的 @ 的是什么意思呢?
|
4
kefengong 2018-12-07 13:14:16 +08:00 via Android
@zzgy 加个 @ 那么前面 val 就可以代表这个分支的值, 这里的 val @ 有点多余, 后面没用到。表述不是很清楚还是翻翻教程吧
|
5
trait 2018-12-07 13:39:21 +08:00 1
const REQ_ID: &'static str = "1";
这 syntax 不能更流畅,明确标注限定和 type 信息 > val @ _ => Err(println_err!("Unsupported")), 将所有除了上述 cases 以外的值绑定到 val,当然这里写法不理想,直接 _ => Err(....) 即可 可能用到的情况比如 val @ _ => println!("{:?}", val); cc https://doc.rust-lang.org/1.5.0/book/patterns.html#bindings |