unraid_notification/
verifypath.rs1use std::path::{Path, PathBuf};
2
3use crate::unraidnotifiererror::UnraidNotifierError;
4
5pub 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}