Be aware that the slide recommends using pointers to enum something {} for opaque types. This is actually UB (you cannot produce those types in Rust and the compiler will reason on those types being uninhabited). I have yet to see actual bugs coming out of this, but it definitely is. The right way is to use enum something { _private: [u8; 0] }, which is an inhabited type that cannot be constructed.

(Also, we will introduce opaque types for the reason that this is a bit… opaque)

To be very clear: this does not introduce UB into safe Rust, as these types (and thus pointers to them) cannot be created without unsafe operations.

I haven’t been able to build the package since the transition to Rust. We’re using the pre-Rust version, even for platforms with Rust support. If someone manages to figure out why it doesn’t build, I guess we’ll keep the old librsvg for non-Rust platforms for as long as possible (we have a lot of those).

for other rust packages, we have resorted to having every package “vendor” its own crates (as opposed to independent packages), but with an additional wrapper to build into our package system, so that we have a local mirror & checksums as with other fetched artifacts.