I glossed over it early on as it didn't support mention Rust support, it also seemed to be for a different use case than I was targeting but I'll give it another look. Thanks for the suggestion.
Update: protocol buffers look more promising than I initially gave it credit and there is a Rust implementation.