Rust macros are not just about DRY

In the last weeks I've been re-working some internals of Restate that enable the SDKs used by our users to interact with the Restate server. At a glance, the Restate server talks with the SDKs using a protocol on top of HTTP that transports few Protobuf messages, prefixed by a header containing message type, length and flags. Easy enough. If you've ever found yourself implementing something…