Replicating state changes across language barriers with Rust, UniFFI, and proc macros