Hi all, I’ll outline the progress from Week 3 of the Rust–UNO binding project.
The focus this week was on improving code quality, enhancing trait implementations, refining memory handling, and making further progress on the FFI infrastructure to support UNO types and integrate more cleanly with the LibreOffice runtime. The Debug and Display traits were improved so that outputs now correctly show strings rather than raw pointers. I also refined the PartialEq trait by replacing to_string() with a direct and more efficient unsafe comparison, which avoids unnecessary conversions and improves performance. I also considered the Hash trait, as currently OUString can’t be used with structures like HashMap or HashSet, but haven't implemented it yet. I reorganized testing by separating the Rust-side unit tests from the integrated ones and placed them in dedicated files. I also added trait-specific tests and memory drop tests, which I ran through Valgrind to ensure safe memory handling. Support for the UNO Type object has been implemented, including its constructors, and the integration now allows calling Rust from C through our FFI system. everything is now working as expected within LibreOffice’s build environment. In the coming week, I’ll focus on understanding how the UNO bridges work and how they are implemented, particularly the role of the maker functions and how UNO mapping works between components. At the same time, I’ll continue expanding support for core UNO types to ensure that the Rust bindings can handle more real-world use cases. Best regards, Mohamed