pub async fn scan_directory( dir: PathBuf, cover_cache: PathBuf, library: &mut Library, on_progress: Arc<dyn Fn(String) + Send + Sync>, ) -> Result<()>