use std::sync::Arc;
#[derive(Clone, Debug, Default)]
pub(crate) struct CallbackMetadata {
name: Option<Arc<str>>,
}
impl CallbackMetadata {
#[inline(always)]
pub(crate) const fn unnamed() -> Self {
Self { name: None }
}
#[inline]
pub(crate) fn named(name: &str) -> Self {
Self {
name: Some(Arc::from(name)),
}
}
#[inline]
pub(crate) fn from_optional_name(name: Option<String>) -> Self {
Self {
name: name.map(Arc::from),
}
}
#[inline(always)]
pub(crate) fn name(&self) -> Option<&str> {
self.name.as_deref()
}
#[inline(always)]
pub(crate) fn set_name(&mut self, name: &str) {
if self.name() != Some(name) {
self.name = Some(Arc::from(name));
}
}
#[inline(always)]
pub(crate) fn clear_name(&mut self) {
self.name = None;
}
}