build prost struct with msg id so as to realize type judgment * examples
protobuf
message Fail{
enum MsgId { None=0;Id = 150002; }
int64 number=1;
string message=2;
}
```rust
pub struct Fail { #[prost(int64, tag = "1")] pub number: i64, #[prost(string, tag = "2")] pub message: ::prost::alloc::string::String, }
pub const FAILID: i32 = Fail::getmsg_id();
impl Fail { #[allow(deadcode)] pub const fn getmsg_id() -> i32 { 150002 } }
impl ::prostmsgid::MsgId for Fail { fn getmsgid(&self) -> i32 { Self::getmsgid() } }
///get all msg type id
pub const fn msg_ids()->&'static [i32]{ &[ 150002, //.RunTT.Fail ] } ```
prost-build
prost-build
makes it easy to generate Rust code from .proto
files as part of
a Cargo build. See the crate documentation for examples
of how to integrate prost-build
into a Cargo project.
protoc
prost-build
uses protoc
to parse the proto files. There are a few ways to make protoc
available for prost-build
.
The first option is to include protoc
in your PATH
this
can be done by following the [protoc
install instructions]. In addition, its possible to
pass the PROTOC=<my/path/to/protoc>
environment variable.
The second option is to provide the vendored
feature flag to prost-build
. This will
force prost-build
to compile protoc
from the bundled source. This will require that
you have the correct dependencies installed include a C++ toolchain, cmake, etc. For
more info on what the required dependencies are check [here].
If you would like to always ignore vendoring protoc
you can additionally pass
PROTOC_NO_VENDOR
and this will always check the PATH
/PROTOC
environment
variables and never compile protoc
from source.
prost-build
is distributed under the terms of the Apache License (Version 2.0).
See LICENSE for details.
Copyright 2017 Dan Burkert