Interface compatibility does not require implementing an interface or a trait. Use compile-time flags and source-compatible APIs to swap out implementations.
🌵 CactusRef lets you build cyclic data structures using strong references and knows how to deallocate unreachable cycles. You can use CactusRef to implement a doubly linked list. The CactusRef API is compatible with std::rc.
To learn Rust, I implemented an audio game. There were some things I liked and some things I didn't. Some things were easy and some were hard. And there were plenty of libraries that were a joy to use.