sandy/src/executor.rs

31 lines
706 B
Rust
Raw Normal View History

2024-02-19 07:34:45 +01:00
use crate::executor::{php::PhpExecutor, python::PythonExecutor};
2024-02-19 07:34:45 +01:00
pub mod php;
pub mod python;
2024-02-19 07:34:45 +01:00
pub mod helper;
pub fn executors() -> Vec<Box<dyn Executor>> {
vec![
2024-02-19 07:34:45 +01:00
Box::new(PhpExecutor {}),
Box::new(PythonExecutor {}),
]
}
pub fn executors_id() -> Vec<String> {
executors()
.iter()
.map(|x| x.id())
.collect()
}
pub fn get_executor<'a, T: Into<String>>(id: T, executors: &'a Vec<Box<dyn Executor>>) -> Option<&'a Box<dyn Executor>> {
let id: String = id.into();
let found = executors.iter().find(|x| x.id() == id);
found
}
pub trait Executor {
fn id(&self) -> String;
fn exec(&self, code: String) -> Result<String, String>;
}