当前位置: 首页 > news >正文

0268-GRPC-prost 生成文件到目录

环境

  • Time 2022-12-10
  • WSL-Ubuntu 22.04
  • prost 0.11

前言

说明

参考:https://docs.rs/prost-build/latest/prost_build/

目标

使用 prost 来自动生成 proto 文件定义的内容,并生成到源码目录。

安装命令

apt install protobuf-compiler

user.proto 文件

syntax = "proto3";
package user;
// 用户
message User{uint64 id = 1; // 编号string name = 2; // 用户名uint32 age = 3; // 年龄
}

Cargo.toml

[package]
edition = "2021"
name = "game"
version = "1.0.0"[dependencies]
prost = "0.11"[build-dependencies]
prost-build = "0.11"

build.rs

use std::io::Result;use prost_build::Config;
fn main() -> Result<()> {Config::new().out_dir("src/proto").compile_protos(&["proto/user.proto"], &["proto/"])?;Ok(())
}

mod.rs

mod user;pub use user::*;

user.rs

/// 用户
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct User {/// 编号#[prost(uint64, tag = "1")]pub id: u64,/// 用户名#[prost(string, tag = "2")]pub name: ::prost::alloc::string::String,/// 年龄#[prost(uint32, tag = "3")]pub age: u32,
}

main.rs

mod proto;fn main() {let user = proto::User {id: 1,name: "JiangBo".to_string(),age: 44,};println!("{user:#?}");
}

项目结构

root@jiangbo12490:~/git/game# tree -L 2 .
.
├── Cargo.lock
├── Cargo.toml
├── build.rs
├── proto
│   └── user.proto
├── src
│   ├── main.rs
│   └── proto
├── target
│   ├── CACHEDIR.TAG
│   ├── debug
│   ├── release
│   └── tmp
└── todo.md

运行结果

root@jiangbo12490:~/git/game# cargo runFinished dev [unoptimized + debuginfo] target(s) in 0.01sRunning `target/debug/game`
User {id: 1,name: "JiangBo",age: 44,
}

总结

使用 prost 来解析 proto 文件,并将源码直接生成到源码目录。

附录

http://www.hskmm.com/?act=detail&tid=38265

相关文章:

  • 0271-GRPC-prost 带长度的编解码
  • 2025 年坡口机源头厂家最新推荐排行榜:欧盟 CE 认证企业领衔,含 15 年工业服务经验品牌,自走式/自动/板材/管道坡口机厂家推荐
  • 0270-GRPC-使用 prost 解码
  • 完整教程:Java开发者进阶之路
  • 动手动脑4
  • python+request+unittest自动化测试
  • 2025 年保温涂料厂家最新推荐排行榜:聚焦技术专利与管理体系认证的优质品牌耐高温/防火耐热/防腐/纳米介孔微珠中空粒子保温涂料公司推荐
  • 2025年云南独立成团游公司权威推荐榜单:云南旅游团/云南私享之旅/云南专属行程游源头公司精选
  • 2025 年气凝胶生产厂家最新推荐排行榜:含气凝胶毡 / 粉 / 隔热板 / 保温罩 / 陶瓷板品牌,优质厂家推荐
  • 102302143郑泽雄第一次作业
  • 作业4
  • 2025年5.5KW工业吸尘器厂家权威推荐榜单:380V防爆吸尘器/7.5KW工业吸尘器/水浴式吸尘器源头厂家精选
  • 2025 年兰州凯文中学推荐:兰州凯文中学,二十载深耕民办教育 双师赋能全维育人 以低进高出成效书写成长答卷
  • OpenEuler 22.03 手动升级 OpenSSH 至 10.2p1 完整方案
  • 配置GOPRIVATE引用私有仓库
  • 【C++】函数参数传递
  • 2025年3d全息投影生产厂家权威推荐榜单:全息投影展厅/全息投影沙盘/全息投影源头厂家精选
  • 用AI“抄底”双十一
  • 基于数据库实现分布式锁
  • 2025.10.24第一节课内容
  • 2025 年国内磁吸盘源头厂家最新推荐排行榜:聚焦电永 / 焊接电 / 电控永 / 起重电 / 液压潜水电等品类实力企业
  • 监督学习、无监督学习、半监督学习、强化学习、自监督学习
  • 2025 年退磁器生产厂家最新推荐榜:技术创新、行业适配与服务保障全景对比及权威测评结果强力退磁器/手提退磁器/小型退磁器公司推荐
  • word批量转pdf
  • 【IEEE出版 | 高届数会议 | 上届已于会后3个多月完成见刊检索】2025第九届控制工程与国际论坛(IWCEAA 2025)
  • SQLServer截取字符串、字符串长度、特殊字符在字符串的下标索引
  • 题解:P8134 [ICPC 2020 WF] Opportunity Cost
  • 解决Qt 不能debug问题
  • 2025年项目总延期?这30款项目进度管理软件让我提前交付率85%!
  • 2025 年最新护眼灯生产厂家推荐榜:含全光谱智能照明标杆企业及高产能品牌优选指南自然光护眼/全光谱护眼/儿童护眼吸顶灯公司推荐