Implement as a macro? https://doc.rust-lang.org/book/ch19-06-macros.html https://users.rust-lang.org/t/deriving-external-traits-on-external-structs/18198/10 https://serde.rs/remote-derive.html https://doc.rust-lang.org/rust-by-example/trait/derive.html