use crate::{Id, IdParseError, Name, NameError}; use thiserror::Error; #[derive(Debug, Clone)] pub struct User { id: Id, first_name: Name, last_name: Name, } #[derive(Error, Debug)] pub enum InvalidUserError { #[error("uuid parse error")] Id(IdParseError), #[error(transparent)] Name(#[from] NameError), } impl User { #[must_use] pub fn new(id: Id, first_name: Name, last_name: Name) -> Self { Self { id, first_name, last_name, } } #[must_use] pub const fn id(&self) -> Id { self.id } #[must_use] pub fn first_name(&self) -> String { self.first_name.to_string() } #[must_use] pub fn last_name(&self) -> String { self.last_name.to_string() } }