Nice. Yeah, the general problem is how to divide and conquer.
Your method is not always available (it depends on the language pair), in my case, Go packages didn't translate into Rust crates 1:1.
Yes. Also it is hard for this method to deal with vtables. Two ways: writting a vtable yourself or write same inheritance in the caller side. Both is not good idea.