I assume the closed source dependency is distributed as a .a/.so/.dll file, then you can use bindgen[0].
Still, yes it's a bit more complicated. But can we not pretend that the non-existent toolchain in C/C++ is easier in 99% of use cases?
[0] - https://medium.com/dwelo-r-d/using-c-libraries-in-rust-13961...