匹配模式中的类型注解

Type annotation in match pattern

我正在使用 serde_json crate,并且必须为 serde_json::from_slice() 的 return 值做一个类型注释。如果我之后使用 letmatch 语句,这有效

let n: Result<serde_json::Value, serde_json::Error> = serde_json::from_slice(buf);
match n {
    Ok(_i) => (),
    Err(_e) => (),
};

但是因为我不需要n,所以我一开始就不想做let语句,只使用一个匹配模式。如何为 _i 制作类型注释?

您可以使用此语法 func::<T>().

显式指定 type parameters of a function call

from_slice()的情况下,只需要指定成功值类型即可。所以你只需要 from_slice::<Value>(buf).

match serde_json::from_slice::<serde_json::Value>(buf) {
    Ok(_i) => (),
    Err(_e) => (),
};