RosettaCodeData/Task/Deepcopy/Rust/deepcopy.rust
2017-09-25 22:28:19 +02:00

26 lines
590 B
Text

// The compiler can automatically implement Clone on structs (assuming all members have implemented Clone).
#[derive(Clone)]
struct Tree<T> {
left: Leaf<T>,
data: T,
right: Leaf<T>,
}
type Leaf<T> = Option<Box<Tree<T>>>;
impl<T> Tree<T> {
fn root(d: T) -> Self {
Tree { left: None, data: d, right: None }
}
fn leaf(d: T) -> Leaf<T> {
Some(Box::new(Tree::root(d)))
}
}
fn main() {
let mut tree = Tree::root(vec![4,5,6]);
tree.right = Tree::leaf(vec![1,2,3]);
tree.left = Tree::leaf(vec![7,8,9]);
let newtree = tree.clone();
}