cap_primitives/fs/
open_unchecked_error.rs1use 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}