garbage_fs/
stdfs.rs

1use std::fs::{self, Metadata};
2use std::io::Result as IoResult;
3use std::path::{Path, PathBuf};
4
5use super::{File, Filesystem};
6
7#[derive(Default)]
8pub struct StdFilesystem;
9
10impl Filesystem for StdFilesystem {
11  type File = fs::File;
12
13  fn create_dir<P: AsRef<Path>>(&self, path: P) -> IoResult<()> {
14    fs::create_dir(path)
15  }
16
17  fn create_dir_all<P: AsRef<Path>>(&self, path: P) -> IoResult<()> {
18    fs::create_dir_all(path)
19  }
20
21  fn rename<P: AsRef<Path>, Q: AsRef<Path>>(
22    &self,
23    from: P,
24    to: Q,
25  ) -> IoResult<()> {
26    fs::rename(from, to)
27  }
28
29  fn remove_file<P: AsRef<Path>>(&self, path: P) -> IoResult<()> {
30    fs::remove_file(path)
31  }
32
33  fn remove_dir_all<P: AsRef<Path>>(&self, path: P) -> IoResult<()> {
34    fs::remove_dir_all(path)
35  }
36
37  fn read_link<P: AsRef<Path>>(&self, path: P) -> IoResult<PathBuf> {
38    fs::read_link(path)
39  }
40
41  fn path_metadata<P: AsRef<Path>>(&self, path: P) -> IoResult<Metadata> {
42    fs::metadata(path)
43  }
44
45  fn symlink_metadata<P: AsRef<Path>>(&self, path: P) -> IoResult<Metadata> {
46    fs::symlink_metadata(path)
47  }
48
49  fn file_metadata(&self, file: &Self::File) -> IoResult<Metadata> {
50    file.metadata()
51  }
52
53  fn path_exists<P: AsRef<Path>>(&self, path: P) -> IoResult<bool> {
54    Ok(path.as_ref().exists())
55  }
56
57  fn open_file<P: AsRef<Path>>(&self, path: P) -> IoResult<Self::File> {
58    fs::File::open(path)
59  }
60
61  fn create_file<P: AsRef<Path>>(&self, path: P) -> IoResult<Self::File> {
62    fs::File::create(path)
63  }
64}
65
66impl File for fs::File {}