已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
6天前关闭
Improve this question
有比下面的代码更简洁的东西吗?
let player_list: Option<Vec<Player>>;
// more code here
if player_list.is_none() || player_list.as_ref().unwrap().is_empty() {
// do something here if player_list is none or empty
}
我想避免||
部分。
3条答案
按热度按时间mrfwxfqh1#
我假设您可能不希望使用
player_list
。在这种情况下,用途:如果可以使用
player_list
:fjaof16o2#
您可以使用
.map_or
甚至.map_or_else
来完成此操作当然,这取决于你是否更容易维护。
q3qa4bjr3#
如果不看代码的整个上下文,很难提出有根据的建议。所以,如果我过早下结论,请提前道歉。
有一个
Option
的Vec
有点奇怪。因为Vec
已经是一个集合,所以它可以是空的。因此,在某种程度上,None
或多或少与Vec()
相同。如果
None
和Vec()
之间没有有意义的差异,那么将player_list
转换为Vec可能会更好。答案中有很好的建议,例如凯撒的回答:
如果
None
和Vec()
之间存在有意义的差异。然后,也许有一个具体的类型来表示这些不同的状态会使事情更容易理解。在这种情况下,您可能会吸收代码在新类型中的不同行为方式。例如:
或