Skip to main content

Storage

Trait Storage 

Source
pub trait Storage: Send + Sync {
    // Required methods
    fn save_trial(
        &self,
        study_name: &str,
        trial: &Trial,
    ) -> Result<(), StorageError>;
    fn load_trials(&self, study_name: &str) -> Result<Vec<Trial>, StorageError>;
    fn save_study_metadata(
        &self,
        meta: &StudyMetadata,
    ) -> Result<(), StorageError>;
    fn load_study_metadata(
        &self,
        study_name: &str,
    ) -> Result<Option<StudyMetadata>, StorageError>;
}
Expand description

Where a study’s trial history lives.

Abstracting this keeps crate::Study agnostic to whether history is a Vec in memory or rows in SQLite. Backends must be Send + Sync so a study can be optimized in parallel; they are expected to use interior mutability (all methods take &self) and upsert trials by (study, trial number).

Required Methods§

Source

fn save_trial( &self, study_name: &str, trial: &Trial, ) -> Result<(), StorageError>

Insert or update a trial for the given study.

Source

fn load_trials(&self, study_name: &str) -> Result<Vec<Trial>, StorageError>

Load all trials for a study, in trial-number order. Returns an empty vec for a study that exists but has no trials yet.

Source

fn save_study_metadata(&self, meta: &StudyMetadata) -> Result<(), StorageError>

Insert or update study-level metadata.

Source

fn load_study_metadata( &self, study_name: &str, ) -> Result<Option<StudyMetadata>, StorageError>

Fetch study-level metadata, or None if the study is unknown.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§