interstice-abi 0.5.0

WASM ABI types and host-call interfaces for the Interstice runtime
Documentation
use crate::IntersticeAbiError;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Hash)]
pub enum Authority {
    Gpu,
    Audio,
    Input,
    File,
    Module,
}

impl Into<String> for Authority {
    fn into(self) -> String {
        match self {
            Authority::Gpu => "Gpu".into(),
            Authority::Audio => "Audio".into(),
            Authority::Input => "Input".into(),
            Authority::File => "File".into(),
            Authority::Module => "Module".into(),
        }
    }
}

impl TryInto<Authority> for String {
    type Error = IntersticeAbiError;

    fn try_into(self) -> Result<Authority, Self::Error> {
        match self.as_str() {
            "Gpu" => Ok(Authority::Gpu),
            "Audio" => Ok(Authority::Audio),
            "Input" => Ok(Authority::Input),
            "File" => Ok(Authority::File),
            "Module" => Ok(Authority::Module),
            _ => Err(IntersticeAbiError::ConversionError(
                "Couldn't convert String to Authority".into(),
            )),
        }
    }
}