libhanzzok 0.1.5

Hanzzok compiler library
Documentation
use super::HtmlNode;

mod block_constructor;
mod decorator_chain;
mod inline_constructor;
mod inline_object;
mod node;
mod text;

pub trait Walker<T> {
    fn walk(&mut self, node: T) -> Vec<HtmlNode>;
}

impl<W: Walker<T>, T> Walker<Box<T>> for W {
    fn walk(&mut self, node: Box<T>) -> Vec<HtmlNode> {
        self.walk(*node)
    }
}

impl<W: Walker<T>, T: Clone> Walker<&'_ T> for W {
    fn walk(&mut self, node: &'_ T) -> Vec<HtmlNode> {
        self.walk(node.clone())
    }
}

impl<W: Walker<T>, T> Walker<Vec<T>> for W {
    fn walk(&mut self, nodes: Vec<T>) -> Vec<HtmlNode> {
        nodes.into_iter().flat_map(|node| self.walk(node)).collect()
    }
}