storage: add StorageIterate #48
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
StorageIterate
provides a way to iterate over all the keys within aStorage
instance.Some notes:
storage
instance while the iterator exists, even though this might not be needed by all implementationsResult<>
both on the initialentries()
call and on each step. This mirrors https://doc.rust-lang.org/std/fs/fn.read_dir.htmlStorageIterate::Error
type parameter makes things more flexible when layering over aStorageImpl
compared to inheriting fromStorageBase
.name()
andname_cstr()
functions on each entry. They mainly exist because on esp-idf's nvs we have cstrings as the underlying data, and I did not want to prevent obtaining entries with non-utf-8 names. In practice, it might be ok to skip non-utf-8 entries instead of allowing access to theCStr
.esp-idf-svc PR: esp-rs/esp-idf-svc#249