use uuid::Uuid;
pub trait Identifiable {
fn with_name(self, name: &str) -> Self
where
Self: Sized;
fn with_uuid(self, uuid: Uuid) -> Self
where
Self: Sized;
fn with_new_uuid(self) -> Self
where
Self: Sized;
fn with_id(self, id: u64) -> Self
where
Self: Sized;
fn with_identity(self, name: Option<&str>, uuid: Option<Uuid>, id: Option<u64>) -> Self
where
Self: Sized;
fn set_identity(&mut self, name: Option<&str>, uuid: Option<Uuid>, id: Option<u64>);
fn set_id(&mut self, id: Option<u64>);
fn set_name(&mut self, name: Option<&str>);
fn generate_uuid(&mut self);
fn get_id(&self) -> Option<u64>;
fn get_name(&self) -> Option<&str>;
fn get_uuid(&self) -> Option<Uuid>;
}