struct Node { key:i32, left:Option>, right:Option> } fn sample()->Node { Node {key:5,left:Some(Box::new(Node {key:3,left:None,right:None})),right:Some(Box::new(Node {key:7,left:None,right:None}))} } fn in_order(n: &Node, out: &mut Vec) { if let Some(left) = &n.left { in_order(left, out); } out.push(n.key); if let Some(right) = &n.right { in_order(right, out); } } fn main() {let root=sample();let mut out=vec![];in_order(&root,&mut out);assert_eq!(out,[3,5,7]);}