use crate::{fn_with, AutoDefault}; #[derive(AutoDefault)] pub struct OptionId(Option); impl OptionId { pub fn new(value: impl Into) -> Self { OptionId::default().with_value(value) } // OptionId BUILDER. #[fn_with] pub fn alter_value(&mut self, value: impl Into) -> &mut Self { self.0 = Some(value.into().trim().replace(' ', "_")); self } // OptionId GETTERS. pub fn get(&self) -> Option { if let Some(value) = &self.0 { if !value.is_empty() { return Some(value.to_owned()); } } None } }