Using a neural network implementation as a teaching tool for intermediate Rust — feedback welcome

I’m experimenting with whether implementing a small neural network engine can be a good teaching artifact for intermediate Rust concepts.

The project intentionally avoids external crates and focuses on:

  • flat memory layouts for tensors
  • explicit indexing math
  • simple, readable implementations over abstractions

The ML side exists mainly to force concrete design tradeoffs.

I’d appreciate feedback specifically on:
• API boundaries
• ownership/borrowing choices
• where this stops being idiomatic Rust
• whether this approach clarifies or obscures Rust concepts

Guide + code walkthrough: