Возможно ли сделать рекурсивное замыкание в Rust?

Это очень простой пример, но как бы я сделал что-то похожее на:

let fact = |x: u32| {
    match x {
        0 => 1,
        _ => x * fact(x - 1),
    }
};

Я знаю, что этот конкретный пример можно легко сделать с помощью итерации, но ямне интересно, если этоМожно сделать рекурсивную функцию в Rust для более сложных вещей (таких как обход деревьев) или если яЯ должен использовать свой собственный стек вместо.

Ответы на вопрос(1)

Ваш ответ на вопрос