I maintaince a video editor written in Rust and I use GPUI's fork as the GUI library. For me, the biggest problem is that GPUI's components seems to have no interacts and I have to write my own components. It confuses me a lot. For example, GPUI's default text inbox has no IME support, no cusor, no Backspace or arror keys support, and EVEN CAN'T TYPE IN IT. Later I got to know gpui-component, but I had already write my own components. I'm not crirticing GPUI, but just got confused by it.
I recently rewrote a complex C++ program into Rust using the Strangler Mode, all codes are written by AI. Firstly, I split the code into some dynamic libraries, which uses C ABI to interacts with each other. Secondly, rewrite the libraries one by one. A init_xxx function are used to construct a object and a free_xxx is used to deconstruct it. A handle is used as 'this' pointer. In the caller side, write another class, constructor calls init_xxx and deconstructor calls free_xxx. No other code should be modified during the split.