I have a software written in Rust, which have three different stages to process a data.
I would like to make it easy to extend functionality by executing modules after each stages specified by a developer, kind of way to have callbacks for each stage
Your post suggests that it's a pipeline of 3 steps, and each step could vary.
If that's correct then you could create 3 traits, one for each step, and have the pipeline operate on those traits.
Each concrete step would then implement one of the traits depending on which stage it should be executed in.