nv-utils 0.1.0

A set of utilities and common abstractions
Documentation
use std::path::Path;
use std::io::{Read, Error, Write};
use std::fs::File;

pub trait FileSystem{
	fn file_exists(&self, filename: &str) -> bool;
}

pub trait FileOpener<T: Read> {
	fn open_file_for_reading(&self, filename: &str) -> Result<T, Error>;
}

pub trait FileWriter<T: Write> {
	fn open_file_for_writing(&self, filename: &str) -> Result<T, Error>;

}

#[derive(Debug)]
pub struct DiskFileSystem;

impl DiskFileSystem {
	pub fn new() -> DiskFileSystem
	{
		DiskFileSystem{}
	}
}

impl FileSystem for DiskFileSystem{
	fn file_exists(&self, filename: &str) -> bool{
		let path = Path::new(filename);
		path.exists()

	}
}

impl FileOpener<File> for DiskFileSystem {
	fn open_file_for_reading(&self, filename: &str) -> Result<File, Error>
	{
		File::open(filename)
	}
}

impl FileWriter<File> for DiskFileSystem {
	fn open_file_for_writing(&self, filename: &str) -> Result<File, Error>
	{
		File::open(filename)
	}
}