Newer
Older
use super::{Disk, Header, Node};
/// A file system
pub struct FileSystem<E> {
pub disk: Box<Disk<E>>,
impl<E> FileSystem<E> {
/// Open a file system on a disk
pub fn open(mut disk: Box<Disk<E>>) -> Result<Option<Self>, E> {
let mut header = Header::default();
try!(disk.read_at(1, &mut header));
/// Create a file system on a disk
pub fn create(mut disk: Box<Disk<E>>) -> Result<Self, E> {
let header = Header::new();
try!(disk.write_at(1, &header));
Ok(FileSystem {
disk: disk,
header: header,
})
}
pub fn node(&mut self, block: u64) -> Result<Node, E> {
let mut node = Node::default();
try!(self.disk.read_at(block, &mut node));
Ok(node)
}