use crate::runtime::{kernel::{CompiledKernel, KernelMetadata}, server::ExecutionMode};
use ruda_core::ir::StorageType;
pub use ruda_core::compiler::{CompilationError, Compiler};
pub trait RudaTask<C: Compiler>: KernelMetadata + Send + Sync {
fn kernel_definition(&self) -> Option<ruda_core::kernel::KernelDefinition> {
None
}
fn compile(
&self,
compiler: &mut C,
compilation_options: &C::CompilationOptions,
mode: ExecutionMode,
address_type: StorageType,
) -> Result<CompiledKernel<C>, CompilationError>;
}