Sounds like basic memoization and topological sort gets you all the way there? If that's really all this is about, I'm sure there a lots of adhoc implementations of it in many codebases. It doesn't necessarily seem like something you'd need to bring in a Rust framework to do.
Edit: lots of downvotes, yet no replies? Can explain someone why my comment is apparently so terrible...?
Edit: lots of downvotes, yet no replies? Can explain someone why my comment is apparently so terrible...?