#[non_exhaustive]pub enum Error {
Show 18 variants
Io(Error),
Format(FormatError),
NotADataset(String),
MissingMessage(MessageType),
AlignmentError(String),
Shape(String),
SwmrUnsupported,
HandlesOutstanding,
ReadOnly,
FileClosed,
SwmrStagedUnsupported,
SwmrAppendUnsupported(&'static str),
AppendUnsupported(&'static str),
AppendInPlaceUnsupported(&'static str),
EditUnsupported(&'static str),
RepackUnsupported(String),
FileLocked(String),
FileMarkedInUse(String),
}Expand description
Errors that can occur when using the high-level API.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Io(Error)
I/O error from the filesystem.
Format(FormatError)
Low-level format parsing error.
NotADataset(String)
The object at the given path is not a dataset.
MissingMessage(MessageType)
A required header message was not found.
AlignmentError(String)
Alignment or size error for zero-copy typed access.
Shape(String)
An array shape error from the ndarray integration: either the flat
data could not be reshaped to the dataset’s dimensions, or a requested
static rank (e.g. read_array::<_, Ix2>) did not match the dataset’s
runtime rank. Only constructed when the ndarray feature is enabled.
SwmrUnsupported
A SWMR operation (e.g. crate::File::refresh) was requested on a file
that was not opened for SWMR reading via File::open_swmr.
HandlesOutstanding
An operation that needs exclusive access to the open file (e.g.
crate::File::refresh) was requested while owned crate::Dataset /
crate::Group handles, or a clone of the crate::File, are still
alive. Drop them and retry.
ReadOnly
A write (e.g. crate::Dataset::append) was requested on a file opened
read-only. Open it with crate::File::open_rw to modify it in place.
FileClosed
A write was requested through a handle whose crate::File has already
been sealed by crate::File::close. Immediate and staged edits are
refused; reads through surviving handles still work. Re-open the file to
modify it again.
SwmrStagedUnsupported
A staged edit (write / set_attr / create_* / delete / copy /
commit) was requested on a file opened with
crate::File::open_swmr_writer, which permits only immediate
crate::Dataset::append. Committing a structural edit would clear the
SWMR-write flag out from under a concurrent reader, so the whole staged
surface is refused in SWMR-writer mode.
SwmrAppendUnsupported(&'static str)
The file or dataset is not a supported target for the SWMR append writer (e.g. a userblock or non-latest-format file, or a dataset that is filtered, not rank-1 with an unlimited dimension, or not Extensible-Array indexed). The payload is a human-readable reason.
AppendUnsupported(&'static str)
The dataset is not a supported target for
Dataset::append_staged — for
example a dataset that is not chunked, not extensible along its first
dimension, not indexed by an Extensible Array, higher than rank 1, uses a
filter this engine cannot re-encode, has a big-endian on-disk element
datatype (for a raw append), or has more than one hard link. The payload
is a human-readable reason.
AppendInPlaceUnsupported(&'static str)
The dataset or file is not a supported target for the fast, immediate
in-place append
(Dataset::append) — for
example a userblock or non-latest-format file, a dataset whose
Extensible-Array index is not yet allocated, one that is not rank-1 /
unlimited / Extensible-Array indexed, one reachable through more than one
hard link, or a path an uncommitted staged edit in the same session will
relocate or delete. Distinct from AppendUnsupported
so a caller can catch this fast-path refusal and fall back to the staged
Dataset::append_staged. The
payload is a human-readable reason.
EditUnsupported(&'static str)
The file or the requested object is not a supported target for the
in-place editor (crate::File::open_rw) — for example a userblock or
non-latest-format file, a group whose links are densely stored, or a
dataset shape/datatype/filter combination the in-place writer cannot
emit yet. The payload is a human-readable reason.
RepackUnsupported(String)
An object in the source file cannot be reproduced faithfully by
repack, so the repack was refused rather than write a
silently degraded file — for example a variable-length, time, bitfield,
or opaque datatype, a virtual/external data layout, an unsupported
filter, or an object reference. The payload names the object and reason.
FileLocked(String)
The file could not be opened because another process holds a conflicting
OS advisory lock — for a writer (crate::File::open_swmr_writer,
crate::File::open_rw) this means another writer or reader is active;
for a plain reader it means a writer is active. The lock is released
automatically when the holder’s process exits, so a crashed writer does
not leave a stale lock. Locking can be disabled per open with
crate::FileLocking::Disabled or globally with
HDF5_USE_FILE_LOCKING=FALSE. The payload is a human-readable reason.
FileMarkedInUse(String)
The file could not be opened because its superblock’s status-flags byte
marks it as held by a writer — the durable flag
crate::File::open_swmr_writer raises, and the reference C library
raises for any writer. Unlike FileLocked this
outlives the process that set it, so it means either that a writer is
active or that one exited without clearing it; the payload names
crate::File::clear_swmr_flag (the h5clear -s equivalent) as the
recovery for the latter. A live SWMR writer can still be followed with
crate::File::open_swmr. The payload is a human-readable reason.
Trait Implementations§
Source§impl Error for Error
Available on crate feature std only.
impl Error for Error
std only.Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<FormatError> for Error
Available on crate feature std only.
impl From<FormatError> for Error
std only.Source§fn from(e: FormatError) -> Self
fn from(e: FormatError) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for Error
impl !UnwindSafe for Error
impl Freeze for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl UnsafeUnpin for Error
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more