1 rust
我知道我可以在 rust 中进行这样的模式匹配
some_result.map(|some_number| {
match some_number {
1 => HttpResponse::NoContent().finish(),
_ => HttpResponse::NotFound().finish(),
}
})
Run Code Online (Sandbox Code Playgroud)
但在 Scala 中我可以这样做
some_option.map {
case 1 => ???
case _ => ???
}
Run Code Online (Sandbox Code Playgroud)
有没有办法避免some_number
上面rust代码中变量的重复?
编辑:
我发现我可以这样做,但我仍然认为最初的问题最好地回答了我的问题。
Ok(match result {
Ok(1) => HttpResponse::NoContent(),
Ok(_) => HttpResponse::NotFound(),
Err(_) => HttpResponse::InternalServerError()
}.finish())
Run Code Online (Sandbox Code Playgroud)
一切都与上下文有关,在这种情况下,我没有包含太多内容......
编辑#2:
换了另一个答案。我真的很喜欢颠倒问题。如果否则不是惯用的 rust afaik。
如果我们只是自行车棚风格,您可以some_number
通过匹配整个结果来避免完全引入:
match some_result {
Ok(1) => Ok(HttpResponse::NoContent().finish()),
Ok(_) => Ok(HttpResponse::NotFound().finish()),
Err(e) => Err(e)
};
Run Code Online (Sandbox Code Playgroud)
但这只是交换some_number
一些Ok
s 和Err
s。我通常更喜欢原始风格,但情人眼里出西施。