use miden_processor::advice::AdviceInputs;
use miden_processor::{
ExecutionError,
ExecutionOptions,
ExecutionOutput,
FastProcessor,
FutureMaybeSend,
Host,
Program,
StackInputs,
};
pub trait ProgramExecutor {
fn new(
stack_inputs: StackInputs,
advice_inputs: AdviceInputs,
options: ExecutionOptions,
) -> Self
where
Self: Sized;
fn execute<H: Host + Send>(
self,
program: &Program,
host: &mut H,
) -> impl FutureMaybeSend<Result<ExecutionOutput, ExecutionError>>;
}
impl ProgramExecutor for FastProcessor {
fn new(
stack_inputs: StackInputs,
advice_inputs: AdviceInputs,
options: ExecutionOptions,
) -> Self {
FastProcessor::new_with_options(stack_inputs, advice_inputs, options)
}
fn execute<H: Host + Send>(
self,
program: &Program,
host: &mut H,
) -> impl FutureMaybeSend<Result<ExecutionOutput, ExecutionError>> {
FastProcessor::execute(self, program, host)
}
}