ockam_core/routing/
error.rsuse crate::{
errcode::{Kind, Origin},
Error,
};
use core::fmt::{self, Debug, Display};
#[derive(Clone, Copy, Debug)]
pub enum RouteError {
IncompleteRoute,
}
impl From<RouteError> for Error {
#[track_caller]
fn from(err: RouteError) -> Self {
let kind = match err {
RouteError::IncompleteRoute => Kind::Misuse,
};
Error::new(Origin::Core, kind, err)
}
}
impl crate::compat::error::Error for RouteError {}
impl Display for RouteError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
RouteError::IncompleteRoute => write!(f, "incomplete route"),
}
}
}
#[derive(Debug)]
pub struct AddressParseError {
kind: AddressParseErrorKind,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum AddressParseErrorKind {
InvalidType(core::num::ParseIntError),
MultipleSep,
}
impl AddressParseError {
pub fn new(kind: AddressParseErrorKind) -> Self {
Self { kind }
}
pub fn kind(&self) -> &AddressParseErrorKind {
&self.kind
}
}
impl Display for AddressParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match &self.kind {
AddressParseErrorKind::InvalidType(e) => {
write!(f, "Failed to parse address type: '{}'", e)
}
AddressParseErrorKind::MultipleSep => {
write!(
f,
"Invalid address string: more than one '#' separator found"
)
}
}
}
}
impl crate::compat::error::Error for AddressParseError {}