#[derive(Clone, Debug, Eq, PartialEq)]
pub enum EvolutionError {
EmptyIdentifier,
}
pub type EvolutionResult<T> = Result<T, EvolutionError>;
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct CandidateId(String);
impl CandidateId {
pub fn new(value: impl Into<String>) -> EvolutionResult<Self> {
let value = value.into();
if value.is_empty() {
return Err(EvolutionError::EmptyIdentifier);
}
Ok(Self(value))
}
pub fn as_str(&self) -> &str {
&self.0
}
}