miden_tx/executor/
program_executor.rs1use miden_processor::advice::AdviceInputs;
2use miden_processor::{
3 ExecutionError,
4 ExecutionOptions,
5 ExecutionOutput,
6 FastProcessor,
7 FutureMaybeSend,
8 Host,
9 Program,
10 StackInputs,
11};
12
13pub trait ProgramExecutor {
19 fn new(
21 stack_inputs: StackInputs,
22 advice_inputs: AdviceInputs,
23 options: ExecutionOptions,
24 ) -> Self
25 where
26 Self: Sized;
27
28 fn execute<H: Host + Send>(
30 self,
31 program: &Program,
32 host: &mut H,
33 ) -> impl FutureMaybeSend<Result<ExecutionOutput, ExecutionError>>;
34}
35
36impl ProgramExecutor for FastProcessor {
37 fn new(
38 stack_inputs: StackInputs,
39 advice_inputs: AdviceInputs,
40 options: ExecutionOptions,
41 ) -> Self {
42 FastProcessor::new_with_options(stack_inputs, advice_inputs, options)
43 }
44
45 fn execute<H: Host + Send>(
46 self,
47 program: &Program,
48 host: &mut H,
49 ) -> impl FutureMaybeSend<Result<ExecutionOutput, ExecutionError>> {
50 FastProcessor::execute(self, program, host)
51 }
52}