Rekursion uppstår när någonting definieras i termer av sig själv.

Dagens rekursion

#[derive(Debug, Clone, PartialEq)]
pub enum Tree<T: fmt::Display> {
    Node {
        value: T,
        left: Box<Tree<T>>,
        right: Box<Tree<T>>,
    },
    End,
}

impl<T: fmt::Display> fmt::Display for Tree<T> {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match &self {
            Tree::Node { value, left, right } => write!(f, "T({} {} {})", value, left, right),
            Tree::End => write!(f, "."),
        }
    }
}

Gott & blandat