假设我有以下内容:
fn foo(f: &Option<Huge>) { ... } fn bar(a: &Option<Huge>, b: &Option<Huge>) { foo(a.or(b)); }
Huge是我不想复制或克隆的大结构。这不起作用,因为.or()取a和b作为值。
Huge
.or()
a
b
有一个简单的解决方案吗?我可能可以做这样的事情:
foo(if a.is_some() { a } else { b });
但是肯定有更好的方法吗?
&Option<T>几乎永远不会是有用的类型,但可以是converted to Option<&T> using as_ref。
&Option<T>
Option<&T>
as_ref
这意味着下面的代码起作用: