Functions are fine, don’t move to struct impls unless it makes sense (but do if the functions all take the same struct as a param).
You can go pretty far with modules and functions. Group related functions and move them to new modules. You can also hide functions that are only used inside one of the submodules by just not marking them as pub
.
One thing that comes to mind is that if the steps of your algorithm all take and return the same data, you can have a trait that expresses that (possibly one of the Fn
traits if you’re going to just use functions), and you can define and rest each step separately.
It’s hard to give more concrete advice without knowing more about your project
Pocket casts has a webapp that works pretty well.
Not sure if you need to pay for it though, I’m grandfathered in