I believe Rust had some form of contract enforcement in its early days, but they eventually removed it because it had too many problems. I wish I could find the post about it, but Google is useless these days.
I actually prefer the invariant section above the definition, but do admit the pre and post in C++ look better.