///|
pub(open) trait Simulator {
/// Return the backend's display name for execution results.
fn name(Self) -> String
/// Execute one circuit.
fn run(Self, @circuit.Program) -> ExecutionResult
/// Execute a batch in input order. One failure must not stop later experiments.
fn run_batch(Self, Array[@circuit.Program]) -> ExecutionResult = _
}
///|
impl Simulator with fn run_batch(self, circuits) -> ExecutionResult {
let experiments = []
for circuit in circuits {
for experiment in self.run(circuit).results() {
experiments.push(experiment)
}
}
ExecutionResult::new(self.name(), experiments)
}