#[macro_export]
macro_rules! nf {
($name:ident, $doc:expr, $param:ident) => {
#[must_use]
#[doc = $doc]
pub fn $name(mut self, $param: impl Into<String>) -> Self {
let text = $param.into();
self.$name = (!text.is_empty()).then_some(text);
self
}
};
}
#[macro_export]
macro_rules! str {
($name:ident, $doc:expr) => {
#[must_use]
#[doc = $doc]
pub fn $name(&self) -> &str {
&self.$name
}
};
}
#[macro_export]
macro_rules! ds {
($name:ident, $doc:expr) => {
#[must_use]
#[doc = $doc]
pub fn $name(&self) -> Option<&str> {
self.$name.as_deref()
}
};
}