1use core::fmt::Display;
2use internationalization::translate;
3
4pub type Result<T> = core::result::Result<T, Error>;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7#[repr(C)]
8pub enum Error {
9 DuplicateGroupIdentifier,
10 DuplicateGroupName,
11 DuplicateUserIdentifier,
12 DuplicateUserName,
13 InvalidGroupIdentifier,
14 InvalidUserIdentifier,
15 TooManyGroups,
16 TooManyUsers,
17 PoisonedLock,
18 NotInitialized,
19 AlreadyInitialized,
20}
21
22impl Display for Error {
23 fn fmt(&self, formatter: &mut core::fmt::Formatter) -> core::fmt::Result {
24 match self {
25 Self::DuplicateGroupIdentifier => {
26 write!(formatter, translate!("Duplicate group identifier"))
27 }
28 Self::DuplicateGroupName => {
29 write!(formatter, translate!("Duplicate group name"))
30 }
31 Self::DuplicateUserIdentifier => {
32 write!(formatter, translate!("Duplicate user identifier"))
33 }
34 Self::DuplicateUserName => {
35 write!(formatter, translate!("Duplicate user name"))
36 }
37 Self::InvalidGroupIdentifier => {
38 write!(formatter, translate!("Invalid group identifier"))
39 }
40 Self::InvalidUserIdentifier => {
41 write!(formatter, translate!("Invalid user identifier"))
42 }
43 Self::TooManyGroups => {
44 write!(formatter, translate!("Too many groups"))
45 }
46 Self::TooManyUsers => {
47 write!(formatter, translate!("Too many users"))
48 }
49 Self::PoisonedLock => {
50 write!(formatter, translate!("Poisoned lock"))
51 }
52 Self::NotInitialized => {
53 write!(formatter, translate!("Not initialized"))
54 }
55 Self::AlreadyInitialized => {
56 write!(formatter, translate!("Already initialized"))
57 }
58 }
59 }
60}