rust - 如何使用Option::或引用Option?

标签 rust reference optional

我有以下几点:

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 });

当然有更好的方法吗?

最佳答案

&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/

相关文章:

generics - Rust:从(仅)<T> 不同的函数返回通用结构

rust - 如何在不冒犯借用检查器的情况下进行计算状态转换?

rust - 128bit由64bit原生划分

reference - 项目引用 v NuGet 依赖项

c++ - C++ 中基类和派生类的作用域

list - 如何从 map 中获取 optional 值作为 optional 列表?

rust - rust 交叉编译 ARM : skylake is not a recognized processor for this target

c - C中 "referencing"和 "dereferencing"的含义

Swift 5.5 异步操作作为 optional 默认值

scala - 建模 optional 参数的最佳方法