use std::collections::HashMap;
use strum::Display;
use triton_vm::prelude::*;
use crate::prelude::*;
pub trait RustShadow {
fn inner(&self) -> &dyn BasicSnippet;
fn rust_shadow_wrapper(
&self,
stdin: &[BFieldElement],
nondeterminism: &NonDeterminism,
stack: &mut Vec<BFieldElement>,
memory: &mut HashMap<BFieldElement, BFieldElement>,
sponge: &mut Option<Tip5>,
) -> Result<Vec<BFieldElement>, RustShadowError>;
fn test(&self);
fn bench(&self);
}
#[derive(Debug, Display, Copy, Clone, Eq, PartialEq)]
pub enum RustShadowError {
ArithmeticOverflow,
DecodingError,
InvalidProof,
SpongeUninitialized,
StackUnderflow,
U64ToU32Error,
U64ToUsizeError,
UsizeToU32Error,
VmError,
AssertionError(i128),
VectorAssertionError(i128),
Other,
}
impl std::error::Error for RustShadowError {}