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文档?