log-tree 0.1.0

This library used for printing tree structure in command line.
Documentation
use log_tree::LogTree;
use std::{env, fs::read_dir, path::Path};

struct DirTree {
    path: String,
    is_dir: bool,
}

impl LogTree for DirTree {
    fn add_node(&self, lvl: u8) -> Option<(String, log_tree::Childs<Self>)> {
        let key = Path::new(&self.path)
            .file_name()?
            .to_string_lossy()
            .into_owned();

        let mut childs = Vec::new();

        if let Some(Ok(dir)) = (lvl < 2).then(|| read_dir(&self.path)) {
            childs = dir
                .filter_map(|entry| entry.ok())
                .map(|entry| DirTree {
                    path: entry.path().to_str().unwrap().to_string(),
                    is_dir: entry.file_type().unwrap().is_dir(),
                })
                .collect();
        }
        Some((key, Box::new(childs)))
    }

    fn decorators(&self, _lvl: u8) -> [&str; 4] {
        match self.is_dir {
            true => ["├─╼ ", "", "└─╼ ", "   "],
            false => ["├─> ", "", "╰─> ", "   "],
        }
    }
}

fn main() {
    let path = env::current_dir().unwrap().to_string_lossy().to_string();
    let tree = DirTree { path, is_dir: true };
    println!("{}", tree.fmt_tree_node(true));
}