Tim*_*mmm 0 reference optional rust
I have the following:
fn foo(f: &Option<Huge>) {}
fn bar(a: &Option<Huge>, b: &Option<Huge>) {
foo(a.or(b));
}
Run Code Online (Sandbox Code Playgroud)
Huge is some big struct that I don't want to copy or clone. This does not work because .or() takes a and b by value.
Is there an easy solution? I can probably do something like this:
foo(if a.is_some() { a } else { b });
Run Code Online (Sandbox Code Playgroud)
Surely there is a better way?
&Option<T>几乎从来都不是一个有用的类型,但它可以转换为Option<&T>usingas_ref。
这意味着以下代码有效:
fn foo(f: Option<&Huge>) {}
fn bar(a: Option<&Huge>, b: Option<&Huge>) {
foo(a.or(b));
}
Run Code Online (Sandbox Code Playgroud)