我有以下几点:
fn foo(f: &Option<Huge>) {}
fn bar(a: &Option<Huge>, b: &Option<Huge>) {
foo(a.or(b));
}
Huge
是一些我不想复制或克隆的大结构。这不起作用,因为.or()
按值接受a
和b
。有一个简单的解决方案吗?我可能可以做这样的事情:
foo(if a.is_some() { a } else { b });
当然有更好的方法吗?
最佳答案
&Option<T>
几乎从来都不是有用的类型,但可以是converted to Option<&T>
using as_ref
。
这意味着以下代码有效:
fn foo(f: Option<&Huge>) {}
fn bar(a: Option<&Huge>, b: Option<&Huge>) {
foo(a.or(b));
}
关于rust - 如何使用Option::或引用Option?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60971041/