【发布时间】:2021-06-07 02:54:41
【问题描述】:
为什么这段代码会在第 7 行出现恐慌? foo_unwrapped 不应该是第 5 行的 Some(3) 而不是 None 吗?
use std::rc::Rc;
fn main()
{
let foo: Rc<i32> = Rc::new(3);
let mut foo_cloned = Rc::clone(&foo);
let mut foo_unwrapped = Rc::get_mut(&mut foo_cloned).unwrap();
foo_unwrapped = &mut 42;
}
【问题讨论】:
-
我说我强烈反对它,而不是我反对它;)但我明白你的观点。在我看来,文档清楚地说明了它何时返回
None以及何时返回Some(_),所以我问自己一个问题,您是否首先阅读了该文档(您说是)。所以你的标题问,为什么它会恐慌 -> 因为unwrap。为什么有一个None值 -> 文档说明了它,因为您有多个 Rc 指向相同的值。
标签: rust reference-counting panic