1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
use std::fs::File; use std::path::Path; use crate::layers::domain::reader_factory::{ReaderFactory, ReaderContext}; pub struct FileReaderFactory {} impl ReaderFactory<File> for FileReaderFactory { fn make_reader(&self, name: String) -> Result<ReaderContext<File>, String> { let file_path = Path::new(&name); if !file_path.is_file() { return Err(format!("{} is not a file", name).into()); } Ok(ReaderContext { source_name: name.clone(), reader: std::fs::File::open(file_path).map_err(|e| e.to_string())? }) } }