Protobuf implementation in Rust.
- Written in pure rust
- Generate rust code
- Has runtime library for generated code (Coded{Input|Output}Stream impl)
- Incomplete and unstable
- Install protobuf for
protoc
binary.
On OS X Homebrew can be used:
brew install protobuf
On Ubuntu, protobuf-compiler package can be installed:
apt-get install protobuf-compiler
- Checkout rust-protobuf sources:
git clone [email protected]:stepancheg/rust-protobuf.git -b <branch>
Where branch is:
master
compatible rust masterrust-M.N
compatible with rust version M.N.*, e.g.rust-0.11
for rust 0.11.0
- Compile the project:
cd src
./rebuild.sh
protoc-gen-rust
binary is generated. protoc-gen-rust
is a rust
plugin for protoc.
- Add
protoc-gen-rust
to $PATH:
PATH="`pwd`:$PATH"
- Generate .rs files:
protoc --rust_out . foo.proto
This will generate .rs files in current directory.
Same procedure is used to regenerate .rs files for rust-protobuf
itself, see ./regerate.sh
.
- Include generated files into your project .rs file:
extern mod protobuf; // depend on rust-protobuf runtime
mod foo; // add generated file to the project
Have a look at generated files, used internally in rust-protobuf:
- descriptor.rs for descriptor.proto (that is part of Google protobuf)
- Implement some rust-specific options
- Deal better with namespaces
- Store unknown fields
- Protobuf reflection
- Extensions
- default_instance for messages with repeated fields
- Generate stubs for services
- Comprehensive test suite
- Default value
@stepancheg on github if you have any questions, suggesions or patches.