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 typeO: 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
}
}
}