A good post, thanks for sharing.<p>> I want to make one (mildly controversial) thing clear: rewriting a library for the sake of only using Rust is not good engineering.<p>Strong agree.<p>> A literal rewrite of a project to Rust is not interesting, it’s not useful, it just causes churn and splits ecosystems. Time would be better spent either working with existing solutions that already have the effort put in to make them correct or to come up with new green-field projects.<p>This... I'm not so sure about. It really depends on what your objective is. For example, if your goal is to learn, you're not going to cause churn, and you're not going to split ecosystems. Working on project you already know well is a good way to learn, because you can focus on the language, not the project.<p>This also isn't <i>exactly</i> a re-write, in my mind. I mean it is, and it isn't. This is because...<p>> The biggest problem when wrapping wlroots was defining the ownership model of the objects that wlroots exposes.<p>The pain here isn't a re-write, it's an integration with an existing system. That's a good reason to not use something different! I also think this is interesting because it demonstrates something that's often said in discussions about Rust, but mostly in the abstract, and that's that Rust's rules influence the design of your system. It will guide you away from designs where the ownership of components is unclear. To many people, this is a benefit, but it can often cause struggles when learning. And, it can often cause struggles in situations like this: where you <i>can't</i> really re-write some external component to fit in the rules.<p>That being said, there should be a way to do the ownership part that makes sense, but I don't know wlroots well enough to comment.<p><i>That</i> being said<p>> Currently there is 11 THOUSAND lines of Rust in wlroots-rs. All of this code is just wrapper code, it doesn’t do anything but memory management.<p>is also super legit. Managing this kind of thing is a pain. I can certainly understand not wanting to do it.