I wonder how to best describe how #RustLang influences design, for better or worse. Here is some rambling...
It makes you avoid cyclical data structures, and you are far more aware of ownership. This makes surprising action at a distance harder. It also makes it more difficult to misuse globals or struct fields as globals just to pass data along to where it is needed no matter how.
Enums turn out to replace dynamic dispatch very often. Inheritance is just gone.
1/n
Since dynamic dispatch is uncommon, you might think traits are less common, but they are not, especially default ones. Because they are used to define how generics fit together statically. Generics are interesting as they are highly abstract yet what happens in runtime is very concrete - no action at a distance.
2/n