【发布时间】:2019-01-15 23:38:46
【问题描述】:
我有一个Rc<Option<T>>,但需要从中获取一个Rc<T>。比如:
let rc_option: Rc<Option<T>> = Rc::new(Ok(value));
let ok_value: Rc<T> = rc_option.map(|option| option.unwrap());
这甚至是遥不可及的吗?这似乎是有道理的,因为Rc 可以只增加它在内部为新映射值所拥有的计数器,但我找不到任何文档。
【问题讨论】:
-
如果内部
Option<T>是None,你会得到什么? -
"这似乎应该是有意义的",一点也不。此外,如果您最终拥有
Option<T>是有原因的,那么为什么要删除Option呢?如果您不需要它,请不要使用Option -
Re: 选项,这只是一个例子,想象一下它试图在一个总是存在的结构中获取一个字段。
-
@Stargateur:使用 C++
shared_ptr可以将shared_ptr获取到字段或数组元素,并共享相同的“计数器”。 -
@MatthieuM。我看不出理性,这似乎很不安全,基本上如果最后一个
shared_ptr不包含好的ptr,你如何释放ptr?这似乎只是为了打破shared_ptr的api。可能!=应该