您现在的位置是:首页 >学无止境 >rust 中protobuf生成与使用网站首页学无止境

rust 中protobuf生成与使用

一名路过的小码农 2024-06-26 14:23:58
简介rust 中protobuf生成与使用

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

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。