我准备用rust实现链表,可以遇到各种问题,不知道怎么解决,求助帮忙看一下
struct LinkList{ header:Option<Box<LinkNode>> } struct LinkNode{ data:T, next:Option<Box<LinkNode>>, } impl LinkList{ fn new()->LinkList{ LinkList{header:None} } fn add(&mut self,data:T){ let node=LinkNode::new(data); match self.header{ None=>{ self.header=Some(Box::new(node)) } Some(mut x)=>{ let mut tmp=x; while tmp.next.is_some() { tmp=tmp.next.unwrap(); } tmp.next=Some(Box::new(node)); } } } } impl LinkNode{ fn new(data:T)->LinkNode{ LinkNode{data:data,next:None} } } fn main() { let a:i32=1; let mut list=LinkList::new(); list.add(a); }
这个是我的写的链表一直在报错,如下是报错的情况
error[E0507]: cannot move out of borrowed content
--> src\main.rs:16:16
|
16 | match self.header{
| ^^^^ cannot move out of borrowed content
...
20 | Some(mut x)=>{
| ----- hint: to prevent move, use ref x
or ref mut x
warning: variable does not need to be mutable
--> src\main.rs:20:18
|
20 | Some(mut x)=>{
| ----^
| |
| help: remove this mut
|
= note: #[warn(unused_mut)] on by defaul
这个该怎么修改呢?
评论区
写评论extern crate slab;
解决所有烦恼。
推荐参考资料
调整一下格式,markdown 解析的