cap_primitives/fs/
open_unchecked_error.rs

1use std::io;
2
3#[derive(Debug)]
4pub(crate) enum OpenUncheckedError {
5    Other(io::Error),
6    Symlink(io::Error, SymlinkKind),
7    NotFound(io::Error),
8}
9
10#[cfg(not(windows))]
11pub(crate) type SymlinkKind = ();
12
13#[cfg(windows)]
14#[derive(Debug)]
15pub(crate) enum SymlinkKind {
16    File,
17    Dir,
18}
19
20impl OpenUncheckedError {
21    #[allow(dead_code)]
22    pub(crate) fn kind(&self) -> io::ErrorKind {
23        match self {
24            Self::Other(err) | Self::Symlink(err, _) | Self::NotFound(err) => err.kind(),
25        }
26    }
27}
28
29impl From<OpenUncheckedError> for io::Error {
30    fn from(error: OpenUncheckedError) -> Self {
31        match error {
32            OpenUncheckedError::Other(err)
33            | OpenUncheckedError::Symlink(err, _)
34            | OpenUncheckedError::NotFound(err) => err,
35        }
36    }
37}