< 返回版块

lll 发表于 2018-04-04 19:33

Tags:rust,链表

我准备用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 这个该怎么修改呢?

评论区

写评论
CrLF0710 2018-04-09 11:31

extern crate slab;

解决所有烦恼。

漂流 2018-04-05 13:22

调整一下格式,markdown 解析的

1 共 3 条评论, 1 页