use crate::{Error, Result, utils::define_name_type_impls};
use serde::Serialize;
use zvariant::{OwnedValue, Str, Type, Value};
#[derive(
Clone, Debug, Hash, PartialEq, Eq, Serialize, Type, Value, PartialOrd, Ord, OwnedValue,
)]
pub struct ErrorName<'name>(Str<'name>);
#[derive(Clone, Hash, PartialEq, Eq, Serialize, Type, Value, PartialOrd, Ord, OwnedValue)]
pub struct OwnedErrorName(#[serde(borrow)] ErrorName<'static>);
define_name_type_impls! {
name: ErrorName,
owned: OwnedErrorName,
validate: validate,
}
fn validate(name: &str) -> Result<()> {
crate::interface_name::validate_bytes(name.as_bytes()).map_err(|_| {
Error::InvalidName(
"Invalid error name. See \
https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-error",
)
})
}