首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么选择`unwrap_or_else`而不是`unwrap_or`?

为什么选择`unwrap_or_else`而不是`unwrap_or`?
EN

Stack Overflow用户
提问于 2019-06-23 18:07:46
回答 1查看 22.5K关注 0票数 33
代码语言:javascript
复制
fn main() {
    let _one = None.unwrap_or("one".to_string());
    let _two = None.unwrap_or_else(|| "two".to_string());
}

为什么人们更喜欢unwrap_or_else而不是unwrap_or

我看到了unwrap_or急切的评论(以为例)。这是否意味着unwrap_or中的值总是在程序执行之前得到评估?而只有当程序执行到该行时才调用unwrap_or_else中的unwrap_or_else值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-23 18:12:54

这两个值都是在程序执行期间计算的,并且可以是任意值。不同之处在于:

  • 使用unwrap_or时,将在调用unwrap_or之前计算回退值,因此将计算它是否需要(因为Rust是一种热切的语言)。
  • 对于unwrap_or_else,只有当unwrap_or_else触发它时(通过调用传递的函数)才会计算回退值,因此只有在需要时才计算它。
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56726571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档