As for the complaints, they are kind of doable in Rust as well.
Use traits with function pointers, empty types, and some macros.