1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
use crate::engine::HyperTaskEngineContext; use crate::error::*; use crate::task::Task; use serde::{Deserialize, Serialize}; use std::fmt; pub const VALID_ID_CHARS: &str = "23456789abcdefghkmnpqrstwxyz"; pub const NUMBER_OF_CHARS_IN_FULL_ID: usize = 16; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Id(pub String); impl Id { pub fn generate< InputIterator: Iterator<Item = HyperTaskResult<Task>>, Context: HyperTaskEngineContext<InputIterator>, >( context: &mut Context, ) -> Self { Self(context.generate_id()) } pub fn sub_eq(&self, other: &Id) -> bool { let Id(self_content) = self; let Id(other_content) = other; self_content.contains(other_content.as_str()) || other_content.contains(self_content.as_str()) } } impl fmt::Display for Id { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let Id(x) = self; write!(f, "{}", x) } }