1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use std::{
cell::RefCell,
rc::Rc,
};
pub type Cell<T> = Rc<RefCell<Node<T>>>;
pub struct Node<T> {
pub next: Option<Cell<T>>,
pub value: T,
}
impl<T> Node<T> {
pub fn new(value: T) -> Cell<T> {
Rc::new(RefCell::new(Self { next: None, value }))
}
pub fn add(
&mut self,
node: Option<Cell<T>>,
) {
self.next = node;
}
pub fn split_off(&mut self) -> Option<Cell<T>> {
self.next.take()
}
}
#[cfg(test)]
mod tests {
#[test]
fn test() {}
}