3. What is the output of this Rust code that finds the maximum element in a BST?
struct Node { value: i32, left: Option, right: Option }
fn find_max(node: &Option) -> i32 {
let mut current = node;
while let Some(ref n) = current {
if n.right.is_none() {
return n.value;
}
current = &n.right;
}
unreachable!()
}
fn main() {
let tree = Some(Box::new(Node {
value: 10,
left: Some(Box::new(Node { value: 5, left: None, right: None })),
right: Some(Box::new(Node {
value: 15,
left: None,
right: Some(Box::new(Node { value: 20, left: None, right: None }))
}))
}));
println!("{}", find_max(&tree));
}