use core::marker::PhantomData; use alloc::boxed::Box; use vfs::{Vnode, VnodeImpl, VnodeKind, VnodeRef}; use yggdrasil_abi::error::Error; use crate::{block::BlockAllocator, bvec::BVec, file::FileNode}; pub(crate) struct DirectoryNode { _pd: PhantomData, } impl VnodeImpl for DirectoryNode { fn create(&mut self, _at: &VnodeRef, name: &str, kind: VnodeKind) -> Result { let child = Vnode::new(name, kind); match kind { VnodeKind::Directory => child.set_data(Box::new(Self { _pd: PhantomData })), VnodeKind::Regular => child.set_data(Box::new(FileNode { data: BVec::::new(), })), _ => todo!(), } Ok(child) } } impl DirectoryNode { pub fn new() -> Self { Self { _pd: PhantomData } } }