use std::{
fmt::Display,
path::{Path, PathBuf},
};
pub fn some_if_file(path: PathBuf) -> Option<PathBuf> {
path.is_file().then_some(path)
}
pub fn some_if_dir(path: PathBuf) -> Option<PathBuf> {
path.is_dir().then_some(path)
}
pub fn get_existing_image_path(base_path: &Path, file_name: impl Display) -> Option<PathBuf> {
["png", "jpg", "jpeg"]
.iter()
.find_map(|ext| some_if_file(base_path.join(format!("{file_name}.{ext}"))))
}
#[cfg(test)]
pub mod test {
use super::*;
#[test]
fn test_get_existing_image_path() {
let base = PathBuf::new();
assert_eq!(get_existing_image_path(&base, "does_not_exist.jpg"), None);
}
}