Предположим, есть такой код
fn f(x : Box<i32>) -> Box<i32> {
if some_random_value {
return x;
} else {
return Box::new(10);
}
}
fn g() -> Box<i32> {
let x = Box::new(20);
return f(x);
}
fn main() {
let a = g();
}
Как раст понимает, что после вызова g() память, выделенную под Box::new(20), надо освободить? Ведь, насколько я понимаю, в зависимости от случайного события (some_random_value) Box::new(20) надо либо удалить после g(), либо вернуть как результат