Extendibility for My Software

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

what approach/way to do recommend?

A library (crate) with three public functions.


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.

is there a repo on GitHub I could use as a reference?