展開對擁有其內容的選項的引用
如果型別 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());