use super::*;
#[derive(Debug, Default, PartialEq, Eq)]
pub struct AdviceStackResource;
impl Resource for AdviceStackResource {
fn name(&self) -> &'static str {
"advice-stack"
}
}
#[derive(Debug, Default, PartialEq, Eq)]
pub struct AdviceMapResource;
impl Resource for AdviceMapResource {
fn name(&self) -> &'static str {
"advice-map"
}
}
#[derive(Debug, Default, PartialEq, Eq)]
pub struct MerkleStoreResource;
impl Resource for MerkleStoreResource {
fn name(&self) -> &'static str {
"advice-merkles-tore"
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum AdviceEffect {
Read,
Write,
Allocate,
Free,
}
impl AsRef<str> for AdviceEffect {
fn as_ref(&self) -> &str {
match self {
Self::Read => "read",
Self::Write => "write",
Self::Allocate => "allocate",
Self::Free => "free",
}
}
}
impl core::fmt::Display for AdviceEffect {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_ref())
}
}
impl core::str::FromStr for AdviceEffect {
type Err = alloc::string::String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
use alloc::string::ToString;
match s {
"read" => Ok(Self::Read),
"write" => Ok(Self::Write),
"allocate" => Ok(Self::Allocate),
"free" => Ok(Self::Free),
s => Err(s.to_string()),
}
}
}
impl PartialEq<AdviceEffect> for &AdviceEffect {
#[inline]
fn eq(&self, other: &AdviceEffect) -> bool {
(**self).eq(other)
}
}
impl Effect for AdviceEffect {}
pub trait AdviceEffectOpInterface = EffectOpInterface<AdviceEffect>;
pub trait HasRecursiveAdviceEffects {}