ModelRegistry

Struct ModelRegistry 

Source
pub struct ModelRegistry { /* private fields */ }
Expand description

Model registry for managing model lifecycle

§Thread Safety

ModelRegistry uses Arc internally for efficient cloning and sharing across threads. The internal HashMap is immutable after creation, making concurrent reads safe without locks.

Implementations§

Source§

impl ModelRegistry

Source

pub fn new() -> Self

Create a new registry with default cache directory

Source

pub fn from_file(path: &str) -> Result<Self>

Create a registry from a JSON file

§Arguments
  • path - Path to registry.json file
§Example
let registry = ModelRegistry::from_file("models/registry.json")?;
Source

pub fn get_model_metadata( &self, task: ModelTask, variant: ModelVariant, ) -> Result<&ModelMetadata>

Get metadata for a specific model

§Arguments
  • task - The model task
  • variant - The model variant
§Returns

Reference to model metadata, or Error if not found

§Example
let metadata = registry.get_model_metadata(
    ModelTask::PromptInjection,
    ModelVariant::FP16
)?;
println!("Model ID: {}", metadata.id);
Source

pub fn list_models(&self) -> Vec<&ModelMetadata>

List all available models in the registry

§Returns

Vector of references to all model metadata

§Example
let all_models = registry.list_models();
for model in all_models {
    println!("Model: {} ({:?}/{:?})", model.id, model.task, model.variant);
}
Source

pub fn list_models_for_task(&self, task: ModelTask) -> Vec<&ModelMetadata>

List all models for a specific task

§Arguments
  • task - The model task to filter by
§Returns

Vector of references to model metadata matching the task

§Example
let models = registry.list_models_for_task(ModelTask::PromptInjection);
println!("Found {} PromptInjection models", models.len());
Source

pub fn get_available_variants(&self, task: ModelTask) -> Vec<ModelVariant>

Get all available variants for a specific task

§Arguments
  • task - The model task
§Returns

Vector of all available model variants for the task

§Example
let variants = registry.get_available_variants(ModelTask::PromptInjection);
for variant in variants {
    println!("Available variant: {:?}", variant);
}
Source

pub fn has_model(&self, task: ModelTask, variant: ModelVariant) -> bool

Check if a specific model is available in the registry

§Arguments
  • task - The model task
  • variant - The model variant
§Returns

true if the model is registered, false otherwise

§Example
if registry.has_model(ModelTask::PromptInjection, ModelVariant::FP16) {
    println!("Model is available!");
} else {
    println!("Model not found");
}
Source

pub fn model_count(&self) -> usize

Get the total number of registered models

§Returns

Count of all models in the registry

§Example
println!("Registry contains {} models", registry.model_count());
Source

pub fn is_empty(&self) -> bool

Check if the registry is empty

§Returns

true if no models are registered, false otherwise

§Example
if registry.is_empty() {
    println!("No models registered");
}
Source

pub async fn ensure_model_available( &self, task: ModelTask, variant: ModelVariant, ) -> Result<PathBuf>

Ensure a model is available locally (download if needed)

This method:

  1. Checks if model is already cached
  2. Verifies checksum if cached
  3. Downloads if not cached or verification fails
  4. Verifies checksum after download
§Arguments
  • task - The model task
  • variant - The model variant
§Returns

Path to the local model file

Trait Implementations§

Source§

impl Clone for ModelRegistry

Source§

fn clone(&self) -> ModelRegistry

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ModelRegistry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ModelRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more