pb-jelly
A protobuf code-generation framework for Rust, built at Dropbox for its storage and sync systems, offering Rust-specific extensions and zero-copy deserialization that general-purpose protobuf libraries do not provide.
pb-jelly is a protobuf code-generation framework for Rust, originally written at Dropbox to move large volumes of bytes through its storage system without the extra copies that came from serializing structs to protobuf messages and then serializing again in an RPC layer. Taking control of code generation and integrating it directly with Dropbox's RPC stack removed those redundant copies.
It generates Rust-oriented protobuf extensions, such as boxing a field or giving it a custom type, generates a separate crate per module with an auto-generated Cargo.toml, supports Serde though not in a way compliant with the JSON protobuf specification, and can automatically box fields to handle recursive message definitions. Zero-copy deserialization is available for bytes fields through a lazy wrapper enabled by a proto extension.
It supports both proto2 and proto3 syntax and is used in several of Dropbox's systems, including its Sync Engine and Magic Pocket storage system. It is written in Rust under the Apache-2.0 license.