this is the top reason for a reasonably complex project, but it can be worked around by preplanning crates.
the other reason is if you really want async as is in vogue nowadays, function coloring - but this is rapidly becoming irrelevant, see article.
> but it can be worked around by preplanning crates.
Maybe if you're working alone.