use std::any::Any;
use datafusion::catalog::Session;
use super::{GpuCallRequest, GpuCallValidation, GpuFunctionDescriptor};
#[async_trait::async_trait]
pub(crate) trait GpuFunctionFamily: Any + Send + Sync {
fn family_id(&self) -> &'static str;
fn descriptors(&self) -> Vec<GpuFunctionDescriptor>;
fn same_installation(&self, installed: &dyn GpuFunctionFamily) -> bool {
self.descriptors() == installed.descriptors()
}
async fn validate(&self, session: &dyn Session, function_name: &str, request: &GpuCallRequest)
-> GpuCallValidation;
}