mirror of https://github.com/zkat/cacache-rs.git
fix(list_sync): make sure the public interface allows using the Item type (#25)
Before this change the public interface wouldn't allow downstream users to use the actual items since it wasn't communicated on the function signature. Previously a user would run into errors like this: > no field `key` on type `<impl std::iter::Iterator as std::iter::Iterator>::Item`
This commit is contained in:
parent
a746fc0216
commit
88a76189fc
22
src/ls.rs
22
src/ls.rs
|
|
@ -1,9 +1,29 @@
|
|||
//! Functions for iterating over the cache.
|
||||
use anyhow::Result;
|
||||
use std::path::Path;
|
||||
|
||||
use crate::index;
|
||||
|
||||
/// Returns a synchronous iterator that lists all cache index entries.
|
||||
pub fn list_sync<P: AsRef<Path>>(cache: P) -> impl Iterator {
|
||||
pub fn list_sync<P: AsRef<Path>>(cache: P) -> impl Iterator<Item = Result<index::Metadata>> {
|
||||
index::ls(cache.as_ref())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use tempfile;
|
||||
|
||||
#[test]
|
||||
fn test_list_sync() {
|
||||
// check that the public interface to list elements can actually use the
|
||||
// Iterator::Item
|
||||
let tmp = tempfile::tempdir().unwrap();
|
||||
let dir = tmp.path().to_owned();
|
||||
|
||||
assert!(list_sync(dir)
|
||||
.map(|x| Ok(x?.key))
|
||||
.collect::<Result<Vec<_>>>()
|
||||
.is_err())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue