llmix-rs 2.0.6

Rust binding for the LLMix orchestration contract with cache, resilience, and config parity
Documentation
use crate::error::LlmixResult;
use crate::types::{DispatchContext, ProviderResult};
use async_trait::async_trait;
use std::future::Future;

#[async_trait]
pub trait DispatchFn: Send + Sync {
    async fn dispatch(&self, ctx: DispatchContext) -> LlmixResult<ProviderResult>;
}

#[async_trait]
impl<F, Fut> DispatchFn for F
where
    F: Fn(DispatchContext) -> Fut + Send + Sync,
    Fut: Future<Output = LlmixResult<ProviderResult>> + Send,
{
    async fn dispatch(&self, ctx: DispatchContext) -> LlmixResult<ProviderResult> {
        (self)(ctx).await
    }
}