screeps/enums/action_error_codes/
game_shard_error_codes.rs1use std::{error::Error, fmt};
2
3use num_derive::FromPrimitive;
4use serde_repr::{Deserialize_repr, Serialize_repr};
5
6use crate::{constants::ErrorCode, FromReturnCode};
7
8#[derive(
13 Debug, PartialEq, Eq, Clone, Copy, Hash, FromPrimitive, Deserialize_repr, Serialize_repr,
14)]
15#[repr(i8)]
16pub enum ActivateAccessErrorCode {
17 NotEnoughResources = -6,
18 InvalidTarget = -7,
19 Full = -8,
20}
21
22impl FromReturnCode for ActivateAccessErrorCode {
23 type Error = Self;
24
25 fn result_from_i8(val: i8) -> Result<(), Self::Error> {
26 let maybe_result = Self::try_result_from_i8(val);
27 #[cfg(feature = "unsafe-return-conversion")]
28 unsafe {
29 maybe_result.unwrap_unchecked()
30 }
31 #[cfg(not(feature = "unsafe-return-conversion"))]
32 maybe_result.unwrap()
33 }
34
35 fn try_result_from_i8(val: i8) -> Option<Result<(), Self::Error>> {
36 match val {
37 0 => Some(Ok(())),
38 -6 => Some(Err(ActivateAccessErrorCode::NotEnoughResources)),
39 -7 => Some(Err(ActivateAccessErrorCode::InvalidTarget)),
40 -8 => Some(Err(ActivateAccessErrorCode::Full)),
41 _ => None,
42 }
43 }
44}
45
46impl fmt::Display for ActivateAccessErrorCode {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 let msg: &'static str = match self {
49 ActivateAccessErrorCode::NotEnoughResources => {
50 "your account does not have enough accessKey resource"
51 }
52 ActivateAccessErrorCode::InvalidTarget => "this shard is not restricted",
53 ActivateAccessErrorCode::Full => "your access is unlimited",
54 };
55
56 write!(f, "{}", msg)
57 }
58}
59
60impl Error for ActivateAccessErrorCode {}
61
62impl From<ActivateAccessErrorCode> for ErrorCode {
63 fn from(value: ActivateAccessErrorCode) -> Self {
64 Self::result_from_i8(value as i8).unwrap_err()
71 }
72}