
比如:
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 请看 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 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 |