zbus_names/
property_name.rs1use crate::{Error, Result, utils::define_name_type_impls};
2use serde::Serialize;
3use zvariant::{OwnedValue, Str, Type, Value};
4
5#[derive(
25 Clone, Debug, Hash, PartialEq, Eq, Serialize, Type, Value, PartialOrd, Ord, OwnedValue,
26)]
27pub struct PropertyName<'name>(Str<'name>);
28
29#[derive(Clone, Hash, PartialEq, Eq, Serialize, Type, Value, PartialOrd, Ord, OwnedValue)]
31pub struct OwnedPropertyName(#[serde(borrow)] PropertyName<'static>);
32
33define_name_type_impls! {
34 name: PropertyName,
35 owned: OwnedPropertyName,
36 validate: ensure_correct_property_name,
37}
38
39fn ensure_correct_property_name(name: &str) -> Result<()> {
40 if name.is_empty() {
41 return Err(Error::InvalidName(
42 "Invalid property name. It has to be at least 1 character long.",
43 ));
44 } else if name.len() > 255 {
45 return Err(Error::InvalidName(
46 "Invalid property name. It can not be longer than 255 characters.",
47 ));
48 }
49
50 Ok(())
51}