首先创建一个项目proto
进入到这个文件夹中 创建我们的proto文件
初始化的项目结构是这个样子的
新建一个hello.proto文件内容如下
syntax = "proto3";
package hello;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
修改Cargo.toml文件 我们需要加一下 我们需要的依赖包
[package]
name = "proto"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
prost = "0.7"
prost-types = { version = "0.7", optional = true }
[build-dependencies]
prost-build = "0.7"
创建一个build.rs 编写代码如下:
fn main() {
prost_build::Config::new()
.out_dir("src/pb")//设置proto输出目录
.compile_protos(&["hello.proto"], &["."])//我们要处理的proto文件
.unwrap();
}
由于我们的项目中没有pb的这个目录 需要手动创建一下,我们的整体结构如下
然后运行cargo build 结果如下
查看在我们刚刚创建的pb文件夹下是否有一个hello.rs文件
在pb目录创建mod.rs文件 内容如下
pub mod hello;
修改main.rs文件 内容如下:
use pb::hello;
mod pb;
fn main() {
let request = hello::HelloRequest {
name: "world".to_string(),
};
println!("request: {:?}", request);
}
执行cargo run