Matthias Beyer
d4872f6da3
The previous iterator was implemented to simply fetch _all_ pathes from the filesystem, no matter what. With this implementation, this changes. The iterator now has functionality to optimize the iteration, if only a subdirectory of the store is required, for example `$STORE/foo`. This is done via functionality where the underlying iterator gets altered. First of all, the interface was changed to return a `Entries` object, which itself only covers the libimagstore-internal `PathIterator` type. This type was changed so that the backend implementation provides an "PathIterBuilder`, which builds the actual iterator object for the `PathIterator` type. The intermediate `StoreIdConstructingIterator` was merged into `PathIterator` for simplicity. The `Entries` type got functionality similar to the `StoreIdIteratorWithStore` type for easier transition to the new API. This should probably be removed at a later point, though. As the `walkdir::WalkDir` type is not as nice as it could be, iterators for two collections in the store could be built like this (untested): store .entries()? .in_collection("foo") .chain(store.entries()?.in_collection("bar")) Functionality to exclude subdirectories is not possible with the current `walkdir::WalkDir` implementation and has to be done during iteration, with filtering (as usual). Signed-off-by: Matthias Beyer <mail@beyermatthias.de> |
||
---|---|---|
.. | ||
file_abstraction | ||
configuration.rs | ||
error.rs | ||
iter.rs | ||
lib.rs | ||
store.rs | ||
storeid.rs | ||
util.rs |