我有一个函数返回Result<Vec<&str>, String>
的节点列表。我的意图是检查一个错误或一个空的向量来提前返回,或者如果有一个列表,则继续。匹配一个错误或一个空结果
这是我正在尝试,除了其他事情,但编译器抱怨x
的类型。
let nodes = list_nodes(client, &service);
match nodes {
Err(e) => {
println!("Unable to list nodes: {:?}", e);
return;
},
Ok(x) if x.as_slice() == [] => {
println!("No nodes found for service: {}", service);
return;
}
_ => {}
}
的错误是:
error[E0282]: type annotations needed
--> src/main.rs:28:18
|
28 | Ok(x) if x.as_slice() == [] => {
| ^^^^^^^^^^^^^^^^^^ cannot infer type for `A`
我认为你需要包含更多的上下文代码。例如,'A'出现在错误消息中,但不在您的代码示例中。请参阅https://stackoverflow.com/help/mcve –
@PeterHall,在我的代码中没有A,你看到的是我从编译器得到的,没有更多的上下文可以给。 –
@Arkaitz,试试'&x ==&[]'。现在您正在比较切片参考和一个空数组。 – red75prime