首先创建一个项目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