nv_utils/
file_system.rs

1use std::path::Path;
2use std::io::{Read, Error, Write};
3use std::fs::File;
4
5pub trait FileSystem{
6	fn file_exists(&self, filename: &str) -> bool;
7}
8
9pub trait FileOpener<T: Read> {
10	fn open_file_for_reading(&self, filename: &str) -> Result<T, Error>;
11}
12
13pub trait FileWriter<T: Write> {
14	fn open_file_for_writing(&self, filename: &str) -> Result<T, Error>;
15
16}
17
18#[derive(Debug)]
19pub struct DiskFileSystem;
20
21impl DiskFileSystem {
22	pub fn new() -> DiskFileSystem
23	{
24		DiskFileSystem{}
25	}
26}
27
28impl FileSystem for DiskFileSystem{
29	fn file_exists(&self, filename: &str) -> bool{
30		let path = Path::new(filename);
31		path.exists()
32
33	}
34}
35
36impl FileOpener<File> for DiskFileSystem {
37	fn open_file_for_reading(&self, filename: &str) -> Result<File, Error>
38	{
39		File::open(filename)
40	}
41}
42
43impl FileWriter<File> for DiskFileSystem {
44	fn open_file_for_writing(&self, filename: &str) -> Result<File, Error>
45	{
46		File::open(filename)
47	}
48}