I suppose this varies drastically from one application to the next in the context of it’s purpose. However, I get this vibe that there are some advanced Rustaceans out there that have adopted a methodical process in laying out the architectural design of their application before a single line of code gets written. This could be for any number of reasons but a few that come to mind would be…
- Drafting out how multiple consumer threads should be designed and any shared data resources they require.
- How certain interfaces to various peripheral i/o (e.g: serial devices, PCIe, and other specialized interfaces) should be handled.
- How to reduce unwanted efforts with fighting the compiler on various pieces of your application that may have the potential to cause this.
From my readings I feel there’s a different/preferred “Rust” approach to this that applies more correctly to Rust’s rules regarding ownership, lifetimes, mutable/shared references, etc. Although, maybe I’m just completely wrong here and only by experience can you acquire the right approach.
I’m getting to a point in my Rust learning endeavors that I want to think about how I would architect an application in Rust versus how I have approached it from C/C++.