Skip to main content

ItemProcessor

Trait ItemProcessor 

Source
pub trait ItemProcessor<I, O> {
    // Required method
    fn process(&self, item: &I) -> ItemProcessorResult<O>;
}
Expand description

A trait for processing items.

This trait defines the contract for components that transform or process items in a batch processing pipeline. It takes an input item of type I and produces an output item of type O.

§Filtering

Returning Ok(None) filters the item silently: it is not passed to the writer and is counted in [StepExecution::filter_count]. This is different from returning Err(BatchError) which counts as a processing error and may trigger fault tolerance.

§Design Pattern

This follows the Strategy Pattern, allowing different processing strategies to be interchangeable while maintaining a consistent interface.

§Type Parameters

  • I: The input item type
  • O: The output item type

§Example

use spring_batch_rs::core::item::{ItemProcessor, ItemProcessorResult};
use spring_batch_rs::error::BatchError;

struct AdultFilter;

#[derive(Clone)]
struct Person { name: String, age: u32 }

impl ItemProcessor<Person, Person> for AdultFilter {
    fn process(&self, item: &Person) -> ItemProcessorResult<Person> {
        if item.age >= 18 {
            Ok(Some(item.clone())) // keep adults
        } else {
            Ok(None) // filter out minors
        }
    }
}

Required Methods§

Source

fn process(&self, item: &I) -> ItemProcessorResult<O>

Processes an item and returns the processed result.

§Parameters
  • item: The item to process
§Returns
  • Ok(Some(processed_item)) when the item is successfully processed
  • Ok(None) when the item is intentionally filtered out
  • Err(BatchError) when an error occurs during processing

Implementors§