StorageBackend::iter_ids() return Result<> with StorageBackendError on error

This commit is contained in:
Matthias Beyer 2015-12-04 14:02:30 +01:00
parent d4cb51486b
commit 3df106ce8b

View file

@ -72,15 +72,23 @@ impl StorageBackend {
}
}
pub fn iter_ids(&self, m: &Module) -> Option<IntoIter<FileID>>
pub fn iter_ids(&self, m: &Module) -> Result<IntoIter<FileID>, StorageBackendError>
{
glob(&self.prefix_of_files_for_module(m)[..]).and_then(|globlist| {
glob(&self.prefix_of_files_for_module(m)[..])
.and_then(|globlist| {
let v = globlist.filter_map(Result::ok)
.map(|pbuf| FileID::from(&pbuf))
.collect::<Vec<FileID>>()
.into_iter();
Ok(v)
}).ok()
})
.map_err(|e| {
let serr = StorageBackendError::build(
"iter_ids()",
"Cannot iter on file ids",
None);
serr
})
}
pub fn iter_files<'a, HP>(&self, m: &'a Module, p: &Parser<HP>)