use std::str::FromStr;
use async_graphql::scalar;
use derive_more::Display;
use linera_witty::{WitLoad, WitStore, WitType};
use serde::{Deserialize, Serialize};
use thiserror::Error;
#[derive(
Clone,
Copy,
Default,
Display,
Hash,
PartialEq,
Eq,
PartialOrd,
Ord,
Serialize,
Deserialize,
WitType,
WitStore,
WitLoad,
Debug,
)]
#[cfg_attr(with_testing, derive(test_strategy::Arbitrary))]
pub enum VmRuntime {
#[default]
Wasm,
Evm,
}
impl FromStr for VmRuntime {
type Err = InvalidVmRuntime;
fn from_str(string: &str) -> Result<Self, Self::Err> {
match string {
"wasm" => Ok(VmRuntime::Wasm),
"evm" => Ok(VmRuntime::Evm),
unknown => Err(InvalidVmRuntime(unknown.to_owned())),
}
}
}
scalar!(VmRuntime);
#[derive(Clone, Debug, Error)]
#[error("{0:?} is not a valid virtual machine runtime")]
pub struct InvalidVmRuntime(String);