展開對擁有其內容的選項的引用
如果型別 T
不可複製,則無法解開對 &Option<T>
選項的引用。解決方案是使用 as_ref()
將選項更改為 &Option<&T>
。
Rust 禁止在借用物件時轉移物件的所有權。當期權本身被借用時(&Option<T>
),其內容也是 - 間接借用的。
#[derive(Debug)]
struct Foo;
fn main() {
let wrapped = Some(Foo);
let wrapped_ref = &wrapped;
println!("{:?}", wrapped_ref.unwrap()); // Error!
}
無法擺脫借來的內容[–explain E0507]
但是,可以建立對 Option<T>
內容的引用。Option 的 as_ref()
方法返回 &T
的一個選項,可以在不轉讓所有權的情況下解包:
println!("{:?}", wrapped_ref.as_ref().unwrap());