4
了,我實現了一個簡單的鏈表正是如此無法移動的&MUT指針
struct List {
data : String,
cons : Option<Box<List>>
}
我已經定義的其他結構具有這種類型的成員,下面
pub struct Context {
head : Option<Box<List>>
}
在結構這個結構體的函數運行,我有這個代碼
let mut temp_head = &mut self.head;
let mut full_msg = "".to_string();
while temp_head.is_some() {
let temp_node = temp_head.unwrap();
full_msg.push_str(temp_node.data.as_slice());
temp_head = temp_node.cons;
}
要遍歷鏈表並組裝一串他們的數據。但是,設置temp_node值的行會產生以下錯誤:cannot move out of dereference of &mut-pointer
,並且編譯器也會抱怨,我試圖放入temp_head的值不會超過該塊。
我試過克隆第一行的temp_head或最後一行的temp_node.cons來獲取我想要的生命週期的版本,但這只是產生了額外的錯誤,而真正的問題似乎是我只是不願意不明白爲什麼第一個版本不起作用。有人可以解釋我做錯了什麼,並且/或者將我鏈接到可以解釋這個問題的Rust文檔?