treenode 0.1.0

A simple Node struct
Documentation
use derive_builder::Builder;
use derive_new::new;
use derive_setters::Setters;

mod impls;
mod macros;

pub use impls::*;

#[derive(new, Builder, Setters, Default, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[setters(into, strip_option)]
pub struct Node<Data> {
    pub data: Data,
    pub children: Vec<Node<Data>>,
}

pub type Nodes<Data> = Vec<Node<Data>>;

impl<Data> Node<Data> {
    pub fn new_from(data: impl Into<Data>, children: impl IntoIterator<Item = Node<Data>>) -> Self {
        Self {
            data: data.into(),
            children: children.into_iter().collect(),
        }
    }
}