pub struct ChainRunner<'a> { /* private fields */ }Expand description
Walks a JSON genome through the chain of registered migrators.
Implementations§
Source§impl<'a> ChainRunner<'a>
impl<'a> ChainRunner<'a>
pub fn new(registry: &'a ChainRegistry) -> Self
Sourcepub fn run_to(
&self,
genome: &mut Value,
target: GenomeSchemaVersion,
) -> Result<ChainResult, MigrationError>
pub fn run_to( &self, genome: &mut Value, target: GenomeSchemaVersion, ) -> Result<ChainResult, MigrationError>
Run the chain, migrating genome from its detected version up to
target. The genome is mutated in place. The returned ChainResult
captures every hop and the final blocking validator’s verdict.
Errors:
DetectionFailedifdetect_schema_versionrejects the input.DowngradeRefusedif the genome is already pasttarget.MissingMigratorif the chain has a gap somewhere in the range.StepFailedif any migrator returns an error.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for ChainRunner<'a>
impl<'a> !UnwindSafe for ChainRunner<'a>
impl<'a> Freeze for ChainRunner<'a>
impl<'a> Send for ChainRunner<'a>
impl<'a> Sync for ChainRunner<'a>
impl<'a> Unpin for ChainRunner<'a>
impl<'a> UnsafeUnpin for ChainRunner<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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