unraid_notification/
verifypath.rs

1use std::path::{Path, PathBuf};
2
3use crate::unraidnotifiererror::UnraidNotifierError;
4
5/// Verify if there exists a file at the described path, fails if not.
6pub trait VerifyPath {
7    fn verify_path(&self) -> Result<(), UnraidNotifierError>;
8}
9
10impl VerifyPath for PathBuf {
11    fn verify_path(&self) -> Result<(), UnraidNotifierError> {
12        self.as_path().verify_path()
13    }
14}
15impl VerifyPath for &Path {
16    fn verify_path(&self) -> Result<(), UnraidNotifierError> {
17        if !&self.try_exists().map_err(UnraidNotifierError::IOError)? {
18            Err(UnraidNotifierError::InvalidPath)
19        } else {
20            Ok(())
21        }
22    }
23}
24
25impl VerifyPath for &str {
26    fn verify_path(&self) -> Result<(), UnraidNotifierError> {
27        Path::new(self).verify_path()
28    }
29}
30
31impl VerifyPath for String {
32    fn verify_path(&self) -> Result<(), UnraidNotifierError> {
33        self.as_str().verify_path()
34    }
35}