pub struct Strategy {} use std::path::PathBuf; use crate::file_handler::{File, FileType, FileHandlerStrategy}; impl FileHandlerStrategy for Strategy { fn is(&self, path: &PathBuf) -> bool { if let Some(extension) = path.extension() { return !path.is_dir() && extension == "gmi" } false } fn identify(&self) -> FileType { FileType::Gemini } fn can_handle(&self, file_type: &FileType) -> bool { match file_type { FileType::Gemini => true, _ => false, } } fn handle(&self, source: &PathBuf, destination: &PathBuf, file: &File) { println!("Should parse and copy {}", file.path.display()) } }