使用Option ::或带有引用

问题描述 投票:0回答:1

假设我有以下内容:

fn foo(f: &Option<Huge>) {
  ...
}

fn bar(a: &Option<Huge>, b: &Option<Huge>) {
  foo(a.or(b));
}

Huge是我不想复制或克隆的大结构。这不起作用,因为.or()ab作为值。

有一个简单的解决方案吗?我可能可以做这样的事情:

  foo(if a.is_some() { a } else { b });

但是肯定有更好的方法吗?

rust reference optional
1个回答
0
投票

&Option<T>几乎永远不会是有用的类型,但可以是converted to Option<&T> using as_ref

这意味着下面的代码起作用:

Option<&T>
© www.soinside.com 2019 - 2024. All rights reserved.