Giving up on wlroots-rs
Even if I accepted the usability problems of the API and I powered through writing all of the wrapper code there is still one major limitation of wlroots-rs that I can’t find a way to work around: it’s impossible to allow a compositor to safely define a custom Wayland protocol with wlroots-rs. So now there will need to be unsafe code in compositor code even though wlroots-rs was supposed to handle it properly…
Smithay is a library similar to wlroots, but is written entirely in Rust. Way Cooler will have to talk to C libraries any ways (the rest of the Wayland ecosystem is all C, including libinput, DRM, and OpenGL), so either more bindings will need to be written (again distracting from the main problem of making a working compositor) or they will need to be RiiR.
Source: way-cooler.org