40 lines
797 B
Rust
40 lines
797 B
Rust
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()
|
|
}
|
|
}
|