imag/lib/core/libimagstore/src
Matthias Beyer d4872f6da3 Optimize the Store::entries() interface
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>
2018-09-27 12:19:18 +02:00
..
file_abstraction Optimize the Store::entries() interface 2018-09-27 12:19:18 +02:00
configuration.rs Use ok_or_else() instead of ok_or() 2018-04-25 19:15:07 +02:00
error.rs Remove unused error kinds 2018-04-30 18:54:11 +02:00
iter.rs Optimize the Store::entries() interface 2018-09-27 12:19:18 +02:00
lib.rs Remove unused dependency 2018-04-24 22:16:40 +02:00
store.rs Optimize the Store::entries() interface 2018-09-27 12:19:18 +02:00
storeid.rs Add StoreIdIterator::with_store() 2018-09-27 12:19:18 +02:00
util.rs Remove "Header" extension for Value type 2018-07-19 20:58:27 +02:00