The rexiv2 library crate (available on crates.io) for Rust provides read and write access to media file (mainly photo) metadata in the Exif, XMP, and IPTC formats. Many file formats are supported, including of course JPEG, PNG, TIFF, XMP sidecar, some camera raw formats, and various others.
I’ve been slowly and patchily working on this library for quite some time, adding to it and improving it whenever my personal tools and work required it, but I believe it is now at the point where it is generally usable and could be helpful to others.
The version number currently stands at the “unstable” 0.4, but that’s just because it hasn’t yet seen sufficient real-world battle-testing to make me confident in a 1.0 release with a promise of stability. No further API-breaking changes are planned, though they could of course happen in response to feedback or the discovery of major bugs.
rexiv2 and gexiv2-sys are both made available under the terms of the terms of the GPL, version 3 or later. Contributions would be most welcome.