Skip to main content

ModelLister

Trait ModelLister 

Source
pub trait ModelLister<H = Client>: WasmCompatSend + WasmCompatSync {
    type Client;

    // Required methods
    fn new(client: Self::Client) -> Self;
    fn list_all(
        &self,
    ) -> impl Future<Output = Result<ModelList, ModelListingError>> + WasmCompatSend;
}
Expand description

A trait for implementing model listing logic for a specific provider.

This trait should be implemented by provider-specific types that handle the details of making HTTP requests to list models and converting provider-specific responses into the generic Model format. Providers with pagination support should internally fetch all pages before returning results.

§Type Parameters

  • H: The HTTP client type (typically reqwest::Client)

§Example Implementation

use crate::client::ModelLister;
use crate::model::{Model, ModelList, ModelListingError};

struct MyProviderModelLister<H> {
    client: Client<MyProviderExt, H>,
}

impl<H> ModelLister<H> for MyProviderModelLister<H>
where
    H: HttpClientExt + Send + Sync,
{
    type Client = Client<MyProviderExt, H>;

    fn new(client: Self::Client) -> Self {
        Self { client }
    }

    async fn list_all(&self) -> Result<ModelList, ModelListingError> {
        // Fetch all models (handle pagination internally if needed)
        todo!()
    }
}

Required Associated Types§

Source

type Client

The client type associated with this lister

Required Methods§

Source

fn new(client: Self::Client) -> Self

Create a new instance of the lister with the given client

Source

fn list_all( &self, ) -> impl Future<Output = Result<ModelList, ModelListingError>> + WasmCompatSend

List all available models from the provider.

This implementation should handle fetching all pages if the provider supports pagination, returning complete results in a single call.

§Returns

A ModelList containing all available models.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§