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§
Sourcefn save_trial(
&self,
study_name: &str,
trial: &Trial,
) -> Result<(), StorageError>
fn save_trial( &self, study_name: &str, trial: &Trial, ) -> Result<(), StorageError>
Insert or update a trial for the given study.
Sourcefn load_trials(&self, study_name: &str) -> Result<Vec<Trial>, StorageError>
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.
Sourcefn save_study_metadata(&self, meta: &StudyMetadata) -> Result<(), StorageError>
fn save_study_metadata(&self, meta: &StudyMetadata) -> Result<(), StorageError>
Insert or update study-level metadata.
Sourcefn load_study_metadata(
&self,
study_name: &str,
) -> Result<Option<StudyMetadata>, StorageError>
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".