use crate::tutors::abstractions::tutor_repo::TutorRepo; use crate::tutors::fs_tutor::FsTutor; use std::{fs, path::PathBuf}; pub struct FsTutorRepo { dir: PathBuf, } impl FsTutorRepo { pub fn with_dir(path: impl Into) -> Self { Self { dir: path.into() } } } impl TutorRepo for FsTutorRepo { fn load(&self) -> impl IntoIterator { let dirs = fs::read_dir(&self.dir).unwrap(); dirs.flatten() .filter(|d| { !d.path() .file_stem() .unwrap() .to_str() .unwrap_or_default() .starts_with('.') }) .map(|d| FsTutor::with_dir(d.path())) } }