clique_types/manifest/
compat.rs

1use super::ProofType;
2
3use serde::{Deserialize, Serialize};
4
5pub type TaskCompatibility = (TaskCompatType, Vec<ProofType>);
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub enum TaskCompatType {
9    EVM,
10    WASM,
11    BuiltIn(String),
12}
13
14impl TaskCompatType {
15    pub fn is_evm(&self) -> bool {
16        matches!(self, TaskCompatType::EVM)
17    }
18
19    pub fn is_wasm(&self) -> bool {
20        matches!(self, TaskCompatType::WASM)
21    }
22
23    pub fn is_builtin(&self) -> bool {
24        matches!(self, TaskCompatType::BuiltIn(_))
25    }
26
27    pub fn as_builtin(&self) -> Option<&str> {
28        match self {
29            Self::BuiltIn(name) => Some(&name),
30            _ => None,
31        }
32    }
33}
34
35impl From<&str> for TaskCompatType {
36    fn from(value: &str) -> Self {
37        Self::BuiltIn(value.to_string())
38    }
39}
40
41impl From<String> for TaskCompatType {
42    fn from(value: String) -> Self {
43        Self::BuiltIn(value)
44    }
45}