#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error(transparent)]
Multicodec(#[from] multi_codec::Error),
#[error(transparent)]
Multikey(#[from] multi_key::Error),
#[error(transparent)]
Multisig(#[from] multi_sig::Error),
#[error(transparent)]
Vlad(#[from] VladError),
}
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum VladError {
#[error("Missing Vlad sigil")]
MissingSigil,
#[error("Missing signing key")]
MissingSigningKey,
#[error("Missing message")]
MissingMessage,
#[error("Vlad Multisig is not a combined signature")]
NotCombined,
#[error("Vlad message is not valid WASM binary")]
InvalidWasm,
}
impl Error {
#[must_use]
pub const fn kind(&self) -> &str {
match self {
Self::Multicodec(_) => "Multicodec",
Self::Multikey(_) => "Multikey",
Self::Multisig(_) => "Multisig",
Self::Vlad(_) => "Vlad",
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_error_kind() {
let err = Error::Vlad(VladError::MissingSigil);
assert_eq!(err.kind(), "Vlad");
}
#[test]
fn test_error_send_sync() {
fn assert_send<T: Send>() {}
fn assert_sync<T: Sync>() {}
assert_send::<Error>();
assert_sync::<Error>();
}
}