• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[allow(unused_imports)]
2 use crate::errors::{Error, ErrorKind};
3 use std::fs;
4 use std::io;
5 use std::path::{Path, PathBuf};
6 
7 /// Defines aliases on [`Path`](https://doc.rust-lang.org/std/path/struct.Path.html) for `fs_err` functions.
8 ///
9 /// This trait is sealed and can not be implemented by other crates.
10 //
11 // Because no one else can implement it, we can add methods backwards-compatibly.
12 pub trait PathExt: crate::Sealed {
13     /// Returns Ok(true) if the path points at an existing entity.
14     ///
15     /// Wrapper for [`Path::try_exists`](https://doc.rust-lang.org/std/path/struct.Path.html#method.try_exists).
16     #[cfg(rustc_1_63)]
fs_err_try_exists(&self) -> io::Result<bool>17     fn fs_err_try_exists(&self) -> io::Result<bool>;
18     /// Given a path, query the file system to get information about a file, directory, etc.
19     ///
20     /// Wrapper for [`crate::metadata`].
fs_err_metadata(&self) -> io::Result<fs::Metadata>21     fn fs_err_metadata(&self) -> io::Result<fs::Metadata>;
22     /// Query the metadata about a file without following symlinks.
23     ///
24     /// Wrapper for [`crate::symlink_metadata`].
fs_err_symlink_metadata(&self) -> io::Result<fs::Metadata>25     fn fs_err_symlink_metadata(&self) -> io::Result<fs::Metadata>;
26     /// Returns the canonical, absolute form of a path with all intermediate components
27     /// normalized and symbolic links resolved.
28     ///
29     /// Wrapper for [`crate::canonicalize`].
fs_err_canonicalize(&self) -> io::Result<PathBuf>30     fn fs_err_canonicalize(&self) -> io::Result<PathBuf>;
31     /// Reads a symbolic link, returning the file that the link points to.
32     ///
33     /// Wrapper for [`crate::read_link`].
fs_err_read_link(&self) -> io::Result<PathBuf>34     fn fs_err_read_link(&self) -> io::Result<PathBuf>;
35     /// Returns an iterator over the entries within a directory.
36     ///
37     /// Wrapper for [`crate::read_dir`].
fs_err_read_dir(&self) -> io::Result<crate::ReadDir>38     fn fs_err_read_dir(&self) -> io::Result<crate::ReadDir>;
39 }
40 
41 impl PathExt for Path {
42     #[cfg(rustc_1_63)]
fs_err_try_exists(&self) -> io::Result<bool>43     fn fs_err_try_exists(&self) -> io::Result<bool> {
44         self.try_exists()
45             .map_err(|source| Error::build(source, ErrorKind::FileExists, self))
46     }
47 
fs_err_metadata(&self) -> io::Result<fs::Metadata>48     fn fs_err_metadata(&self) -> io::Result<fs::Metadata> {
49         crate::metadata(self)
50     }
51 
fs_err_symlink_metadata(&self) -> io::Result<fs::Metadata>52     fn fs_err_symlink_metadata(&self) -> io::Result<fs::Metadata> {
53         crate::symlink_metadata(self)
54     }
55 
fs_err_canonicalize(&self) -> io::Result<PathBuf>56     fn fs_err_canonicalize(&self) -> io::Result<PathBuf> {
57         crate::canonicalize(self)
58     }
59 
fs_err_read_link(&self) -> io::Result<PathBuf>60     fn fs_err_read_link(&self) -> io::Result<PathBuf> {
61         crate::read_link(self)
62     }
63 
fs_err_read_dir(&self) -> io::Result<crate::ReadDir>64     fn fs_err_read_dir(&self) -> io::Result<crate::ReadDir> {
65         crate::read_dir(self)
66     }
67 }
68