Ale*_*lia 2 lazy-evaluation rust rust-clippy
如果变体仅在需要时..._or_else()执行
// example
let value = option.unwrap_or_else(|| compute_value(argument));
// only executed if `option` is of enum variant Option::None
Run Code Online (Sandbox Code Playgroud)
那么有没有什么情况是..._or()有优势的呢?
我的理解是,如果里面的结果..._or_else()已经计算出来了,那么using..._or()就可以毫无缺陷地使用。但这种情况有什么好处吗?
..._or_else()我尝试过情况并发现了建议从 更改为 的Clippy 规则..._or(),但我很难理解该规则的原因:
为什么这样不好?
在某些情况下,使用即时求值会更短、更简单。
已知问题
Deref 和 Index 有可能产生副作用,但不建议这样做。急切地评估>它们可以改变程序的语义。
使用*_or而不是*_or_else当您已经有该值时可以节省至少 7 个字符(_else可能||更多 {}),因此噪音更少。
它还会导致创建更少的闭包\xe2\x80\x94,这对于新的 Rustacean 或另一种编程语言的开发人员来说可能是未知或不熟悉的语法\xe2\x80\x94是否会在性能或编译时间上产生可测量的差异我不知道当然可以,但是对于编译器和阅读代码的人来说,这肯定会减少工作量。
\n