pedant_types/
capability.rs1use std::str::FromStr;
2
3use serde::{Deserialize, Serialize};
4
5use crate::ParseCapabilityError;
6
7#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
9#[serde(rename_all = "snake_case")]
10pub enum Capability {
11 Network,
13 FileRead,
15 FileWrite,
17 ProcessExec,
19 EnvAccess,
21 UnsafeCode,
23 Ffi,
25 Crypto,
27 SystemTime,
29 ProcMacro,
31}
32
33impl FromStr for Capability {
34 type Err = ParseCapabilityError;
35
36 fn from_str(s: &str) -> Result<Self, Self::Err> {
37 match s {
38 "network" => Ok(Self::Network),
39 "file_read" => Ok(Self::FileRead),
40 "file_write" => Ok(Self::FileWrite),
41 "process_exec" => Ok(Self::ProcessExec),
42 "env_access" => Ok(Self::EnvAccess),
43 "unsafe_code" => Ok(Self::UnsafeCode),
44 "ffi" => Ok(Self::Ffi),
45 "crypto" => Ok(Self::Crypto),
46 "system_time" => Ok(Self::SystemTime),
47 "proc_macro" => Ok(Self::ProcMacro),
48 _ => Err(ParseCapabilityError::new(s)),
49 }
50 }
51}