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值?
发布于 2019-06-23 18:12:54
这两个值都是在程序执行期间计算的,并且可以是任意值。不同之处在于:
unwrap_or时,将在调用unwrap_or之前计算回退值,因此将计算它是否需要(因为Rust是一种热切的语言)。unwrap_or_else,只有当unwrap_or_else触发它时(通过调用传递的函数)才会计算回退值,因此只有在需要时才计算它。https://stackoverflow.com/questions/56726571
复制相似问题