pub trait Segment<Provider>:
Debug
+ Send
+ Sync {
// Required methods
fn segment(&self) -> PruneSegment;
fn mode(&self) -> Option<PruneMode>;
fn purpose(&self) -> PrunePurpose;
fn prune(
&self,
provider: &Provider,
input: PruneInput,
) -> Result<SegmentOutput, PrunerError>;
// Provided methods
fn save_checkpoint(
&self,
provider: &Provider,
checkpoint: PruneCheckpoint,
) -> ProviderResult<()>
where Provider: PruneCheckpointWriter { ... }
fn required_stage(&self) -> Option<StageId> { ... }
}Expand description
A segment represents a pruning of some portion of the data.
Segments are called from Pruner with the following lifecycle:
- Call
Segment::prunewithdelete_limitofPruneInput. - If
Segment::prunereturned aSomeincheckpointofSegmentOutput, callSegment::save_checkpoint. - Subtract
prunedofSegmentOutputfromdelete_limitof nextPruneInput.
Required Methods§
Sourcefn segment(&self) -> PruneSegment
fn segment(&self) -> PruneSegment
Segment of data that’s pruned.
Sourcefn purpose(&self) -> PrunePurpose
fn purpose(&self) -> PrunePurpose
Purpose of the segment.
Sourcefn prune(
&self,
provider: &Provider,
input: PruneInput,
) -> Result<SegmentOutput, PrunerError>
fn prune( &self, provider: &Provider, input: PruneInput, ) -> Result<SegmentOutput, PrunerError>
Prune data for Self::segment using the provided input.
Provided Methods§
Sourcefn save_checkpoint(
&self,
provider: &Provider,
checkpoint: PruneCheckpoint,
) -> ProviderResult<()>where
Provider: PruneCheckpointWriter,
fn save_checkpoint(
&self,
provider: &Provider,
checkpoint: PruneCheckpoint,
) -> ProviderResult<()>where
Provider: PruneCheckpointWriter,
Save checkpoint for Self::segment to the database.
Sourcefn required_stage(&self) -> Option<StageId>
fn required_stage(&self) -> Option<StageId>
Returns the stage this segment depends on, if any.
If this returns Some(stage_id), the pruner will skip this segment if the stage
has not yet caught up with the Finish stage checkpoint.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".