1use self::PermissionError::{PermissionDenied, UnknownPermission};
2use std::fmt::{Display, Formatter};
3
4#[derive(Debug, Eq, PartialEq)]
5pub enum PermissionError {
6 PermissionDenied { permission: String, user: String },
8
9 UnknownPermission { permission: String, user: String },
11}
12
13impl Display for PermissionError {
14 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
15 match self {
16 PermissionDenied { permission, user } => {
17 write!(f, "Permission: '{permission}' not set for {user}.")
18 }
19 UnknownPermission { permission, user } => {
20 write!(f, "Unknown Permission: '{permission}' asked for {user}.")
21 }
22 }
23 }
24}
25
26impl PermissionError {
27 pub fn denied(permission: impl Display, user: impl Display) -> Self {
29 PermissionDenied {
30 permission: permission.to_string(),
31 user: user.to_string(),
32 }
33 }
34
35 pub fn unknown(permission: impl Display, user: impl Display) -> Self {
37 UnknownPermission {
38 permission: permission.to_string(),
39 user: user.to_string(),
40 }
41 }
42}