format: add the Storage trait; make the error enums non-exhaustive
Range-read milestone M1, first step (docs/design/range-reads.md §3(a)): a synchronous, no_std read interface with u64 offsets, read_at returning Cow<[u8]>, read_ranges, len and an as_contiguous fast path. Implemented for [u8], Vec<u8>, &T, Box<T> and Arc<T>; slices serve borrowed bytes. read_exact_at reproduces the parsers' UnexpectedEof bounds error exactly, so converted modules keep their error values. FormatError gains Storage(String) and ContiguousStorageRequired; it and the facade Error are now #[non_exhaustive] (breaking for exhaustive matches, noted in the changelog; the Python bindings' match gets a wildcard arm). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -6,7 +6,12 @@ use clawhdf5_format::error::FormatError;
|
||||
use clawhdf5_format::message_type::MessageType;
|
||||
|
||||
/// Errors that can occur when using the high-level API.
|
||||
///
|
||||
/// Non-exhaustive: new failure modes add variants, so a `match` needs a
|
||||
/// wildcard arm. Failures of a [`Storage`](clawhdf5_format::storage::Storage)
|
||||
/// backend arrive as `Error::Format(FormatError::Storage(..))`.
|
||||
#[derive(Debug)]
|
||||
#[non_exhaustive]
|
||||
pub enum Error {
|
||||
/// I/O error from the filesystem.
|
||||
Io(std::io::Error),
|
||||
|
||||
Reference in New Issue
Block a user