我刚看到一个拉取请求中的以下更改:
- .ok_or(Error::new(ErrorKind::Other, "Decode error"));
+ .ok_or_else(|| Error::new(ErrorKind::Other, "Decode error"));
我知道的唯一区别如下:
- 在
ok_or
中,我们已经通过Error::new
创建了Error
并将其传递给了一个适配器。 - 在
ok_or_else
中,我们传递了一个闭包,它将产生这样的值,但如果在Option
中有Some
数据,则可能不会调用该闭包。
unwrap_or
和unwrap_or_else
以及其他情况吗?我知道有一些情况是当你将它们与标量一起使用时,例如像unwrap_or(0)
,但这就是全部吗? - Victor Polevoy