tree-type 0.4.5

Rust macros for creating type-safe filesystem tree structures
Documentation
#![allow(deprecated)]

use tree_type::GenericDir;
use tree_type::GenericFile;
use tree_type::file_type;

use tree_type::tree_type;

file_type!(TestFile);

tree_type! {
    TestTree {
        config("config.toml"),
        data/
    }
}

#[test]
fn test_file_to_generic() {
    let file = TestFile::new("/tmp/test.txt").unwrap();
    let generic: GenericFile = file.into();
    assert_eq!(generic.as_path(), std::path::Path::new("/tmp/test.txt"));
}

#[test]
fn test_generic_to_file() {
    let generic = GenericFile::new("/tmp/test.txt").unwrap();
    let file = TestFile::from_generic(generic);
    assert_eq!(file.as_path(), std::path::Path::new("/tmp/test.txt"));
}

#[test]
fn test_dir_to_generic() {
    let tree = TestTree::new("/tmp/test").unwrap();
    let generic: GenericDir = tree.into();
    assert_eq!(generic.as_path(), std::path::Path::new("/tmp/test"));
}

#[test]
fn test_generic_to_dir() {
    let generic = GenericDir::new("/tmp/test").unwrap();
    let tree = TestTree::from_generic(generic);
    assert_eq!(tree.as_path(), std::path::Path::new("/tmp/test"));
}

#[test]
fn test_proc_macro_file_to_generic() {
    let tree = TestTree::new("/tmp/test").unwrap();
    let config = tree.config();
    let generic: GenericFile = config.into();
    assert_eq!(
        generic.as_path(),
        std::path::Path::new("/tmp/test/config.toml")
    );
}

#[test]
fn test_proc_macro_dir_to_generic() {
    let tree = TestTree::new("/tmp/test").unwrap();
    let data = tree.data();
    let generic: GenericDir = data.into();
    assert_eq!(generic.as_path(), std::path::Path::new("/tmp/test/data"));
}