我想知道是否可以对从crate https://docs.rs/bincode/2.0.0-rc.3/bincode/fn.decode_from_slice.html函数返回的类型使用if let Ok()
语法,这需要显式类型注释Result<Tuple(Struct, usize), DecodeError>
bincode::decode_from_slice
bincode
我尝试了以下语法
struct A {
a: i32,
b: i32,
}
let mut recv_buff = [0u8; 1024];
if let Ok((a_obj, _): (A, usize)) = bincode::decode_from_slice(recv_buff, bincode::config::standard().with_big_endian()) {
}
错误
if let Ok((a_obj, _): (A, usize)) = bincode::decode_from_slice(recv_buff, bincode::config::standard()....
| ^ expected one of `)`, `,`, or `|`
您不能向 中添加注释
if let
,但您可以只指定所需的通用类型。虽然 Rust 不允许在模式内进行类型归属,但它对于类型注释仍然非常灵活。另一个答案显示了如何使用turbofish on 指定类型
decode_from_slice()
,但您也可以:Result::Ok
:当您需要指定循环变量的类型时,后一种形式非常有用
for
。