#[non_exhaustive]pub enum Error {
Show 22 variants
NotRegistered,
InvalidParam,
NoMemory,
Timeout,
NotSupported,
QueueFull,
MlFailed,
NetRefused,
NetUnreachable,
NetAddrInUse,
NetReset,
NetDnsFail,
NetClosed,
BusNack,
BusBusy,
BusError,
QueueEmpty,
WouldBlock,
Eof,
Inval,
NotFound,
Unknown(i32),
}Expand description
oveRTOS error codes, mapped from C OVE_ERR_* defines in ove/types.h.
When adding a new variant, update from_code,
to_code, Display, and
the _assert_codes_match function below.
The enum is #[non_exhaustive] so the substrate can add new
OVE_ERR_* codes (mapped to fresh variants here) without breaking
downstream match blocks at compile time. Callers should always
include a _ => … arm. Matches std::io::ErrorKind convention.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
NotRegistered
The requested resource or subsystem has not been registered (OVE_ERR_NOT_REGISTERED).
InvalidParam
One or more parameters passed to the API were invalid (OVE_ERR_INVALID_PARAM).
NoMemory
Heap or static allocation failed (OVE_ERR_NO_MEMORY).
Timeout
The operation did not complete within the allowed time (OVE_ERR_TIMEOUT).
NotSupported
The requested operation is not supported by this platform (OVE_ERR_NOT_SUPPORTED).
QueueFull
The queue was full and the item could not be enqueued (OVE_ERR_QUEUE_FULL).
MlFailed
ML inference or model loading failed (OVE_ERR_ML_FAILED).
NetRefused
Remote peer refused the connection (OVE_ERR_NET_REFUSED).
NetUnreachable
Network or host is unreachable (OVE_ERR_NET_UNREACHABLE).
NetAddrInUse
Local address already in use (OVE_ERR_NET_ADDR_IN_USE).
NetReset
Connection was reset by the remote peer (OVE_ERR_NET_RESET).
NetDnsFail
DNS name resolution failed (OVE_ERR_NET_DNS_FAIL).
NetClosed
Connection closed by the remote peer (OVE_ERR_NET_CLOSED).
BusNack
Bus peripheral: device did not acknowledge (OVE_ERR_BUS_NACK).
BusBusy
Bus peripheral: bus is busy / arbitration lost (OVE_ERR_BUS_BUSY).
BusError
Bus peripheral: generic bus error (OVE_ERR_BUS_ERROR).
QueueEmpty
The queue was empty and no item could be received (OVE_ERR_QUEUE_EMPTY).
WouldBlock
A non-blocking operation would have had to block (OVE_ERR_WOULD_BLOCK).
Eof
End of file / directory iterator exhausted (OVE_ERR_EOF).
Inval
Argument or state is invalid for this operation (OVE_ERR_INVAL).
NotFound
Requested key / entry / resource was not found (OVE_ERR_NOT_FOUND).
Unknown(i32)
An error code not covered by the above variants; the raw code is preserved.
Implementations§
Source§impl Error
impl Error
Sourcepub fn from_code(code: i32) -> Result<()>
pub fn from_code(code: i32) -> Result<()>
Convert a C return code to Result<()>.
Zero (OVE_OK) maps to Ok(()), negative values map to the
corresponding Error variant.
Sourcepub fn is_net_error(&self) -> bool
pub fn is_net_error(&self) -> bool
Returns true if this is a networking-related error.
Sourcepub fn is_bus_error(&self) -> bool
pub fn is_bus_error(&self) -> bool
Returns true if this is a bus peripheral error (I2C/SPI).
Trait Implementations§
Source§impl Error for Error
core::error::Error is stable since Rust 1.81; our MSRV is 1.85 so
the impl can be unconditional. std::error::Error is a re-export
of core::error::Error (also since 1.81), so this single impl
covers both no_std and std consumers — no #[cfg(feature = "std")]
gymnastics. The default source() -> None is correct: ove::Error
doesn’t chain to a lower-level cause.
impl Error for Error
core::error::Error is stable since Rust 1.81; our MSRV is 1.85 so
the impl can be unconditional. std::error::Error is a re-export
of core::error::Error (also since 1.81), so this single impl
covers both no_std and std consumers — no #[cfg(feature = "std")]
gymnastics. The default source() -> None is correct: ove::Error
doesn’t chain to a lower-level cause.
1.30.0 · 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()