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

rust使用protobuf

安装protoc https://github.com/protocolbuffers/protobuf/releases

toml

prost = "0.14.1"
tokio-stream = { version = "0.1", features = ["net"] }
bytes = "1.11.0"
prost-types = "0.14.1"[build-dependencies]
prost-build = "0.14.1"

build.rs

fn main() {// 编译 .proto 文件prost_build::compile_protos(&["src/protos/biz_activity.proto"], &["src/protos/"]).unwrap();
}

proto

syntax = "proto3";package biz_activity;// 定义业务活动消息
message BizActivity {optional string id = 1;optional string name = 2;optional int32 status = 3;optional int64 create_time = 4;  // 使用时间戳optional string additional_field = 5;
}

main.rs

use std::time::{SystemTime, UNIX_EPOCH};
use prost::Message;// 引入生成的 Protobuf 结构
mod protos {include!(concat!(env!("OUT_DIR"), "/biz_activity.rs"));
}use protos::BizActivity as ProtobufBizActivity;#[tokio::main]
async fn main() {// 演示 Protobuf 功能:将数据转换为 Protobuf 格式let protobuf_activity = ProtobufBizActivity {id: Some("protobuf_id".to_string()),name: Some("Protobuf 活动".to_string()),status: Some(1),create_time: Some(SystemTime::now().duration_since(UNIX_EPOCH).expect("时间获取失败").as_secs() as i64),additional_field: Some("Protobuf 额外信息".to_string()),};// 序列化为字节let encoded_data: Vec<u8> = protobuf_activity.encode_to_vec();println!("Protobuf 数据大小: {} 字节", encoded_data.len());// 反序列化let decoded_activity = ProtobufBizActivity::decode(&encoded_data[..]).unwrap();println!("解码后的活动名称: {:?}", decoded_activity.name);
}

image

编译后的源码在 target/debug/build/项目名-哈希/out/目录中

// This file is @generated by prost-build.
/// 定义业务活动消息
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct BizActivity {#[prost(string, optional, tag = "1")]pub id: ::core::option::Option<::prost::alloc::string::String>,#[prost(string, optional, tag = "2")]pub name: ::core::option::Option<::prost::alloc::string::String>,#[prost(int32, optional, tag = "3")]pub status: ::core::option::Option<i32>,/// 使用时间戳#[prost(int64, optional, tag = "4")]pub create_time: ::core::option::Option<i64>,#[prost(string, optional, tag = "5")]pub additional_field: ::core::option::Option<::prost::alloc::string::String>,
}
http://www.rkmt.cn/news/142744.html

相关文章:

  • 蒸汽轮机在线监测:燃气电厂高效运转的“二当家”与隐形守护者
  • 青云卫找谁买:复购率90%!老客私藏选购路径曝光 - 品牌测评家
  • 破局AI搜索流量困局:Deepseek优化核心服务商深度解析 - 品牌推荐排行榜
  • 优质石英粉厂家推荐排行榜——聚焦高纯度与定制化需求 - 资讯焦点
  • 2025年大模型学习终极指南:四阶段路线图,带你从零基础到实战专家,大模型从入门到精通!
  • 科研新利器:书匠策AI如何重塑期刊论文写作的智能范式
  • 大黄蜂重疾找谁买:用户增300%!靠谱顾问名单首公开 - 品牌测评家
  • 护发精油什么牌子效果最好?7款针对不同发质护发精油实测清单 - 资讯焦点
  • 前端 TypeScript 入门2
  • python基于flask的学生课外时间管理系统_a673wq6x_Pycharm vue django
  • 当你的论文卡在“差一点就能投”:一位科研“老油条”的深夜自白与一个安静却高效的AI写作伙伴
  • 深耕精准触达:GEO优化服务商的专业力甄选指南 - 品牌推荐排行榜
  • 2025最新园林景观、景观设计、景观施工、绿化、景观工程推荐至大园林景观:三维服务体系,铸就空间美化专家 - 全局中转站
  • python基于flask的山西高校毕业生信息咨询平台_w2i00tg5_Pycharm vue django
  • 数字生命工程的突破-震惊吧,世界!
  • 德国留学机构哪个好?中山市粤教国际教育实力分析 - 栗子测评
  • python基于flask的校园人脸识别门禁系统的设计与实现_rgjx5997_Pycharm vue django
  • 当人类科学家遇上AI“同行评审”:一场关于效率、规范与科研表达的静默革命——书匠策AI期刊写作功能体验手记
  • 2025年12月南油尾货推荐榜:南油服装尾货、高端尾货供应、尾货库存、服装库存、服装尾货全品类、高价一手回收、直播高价回收,健建服饰登顶,高品质尾货选购风向标 - 海棠依旧大
  • 基于php的非物质文化遗产推广系统
  • CA-310微量水分测量仪供应商推荐:2025年行业优秀企业 - 品牌推荐大师1
  • 基于springboot + vue职位管理推荐系统
  • 【笔记】golang plan9 汇编中,一个汇编函数调用另一个汇编函数
  • 2025年显微镜公司推荐榜:高清视频显微镜/测量型显微镜/智能识别显微镜/产线自动化智能检测显微镜/生物显微镜厂家核心实力全解析 - 海棠依旧大
  • 2025年防撞与桥梁护栏公司推荐榜:桥面防撞与桥梁护栏/灯光防撞与桥梁护栏/道路防撞与桥梁护栏厂家引领行业安全升级 - 海棠依旧大
  • python基于Web端及微信小程序的会议室预约管理系统设计与实现_1618dule_Pycharm vue flask
  • 学术构思的智能进化:当期刊论文写作进入“模块化”时代
  • TOB企业高效获客的软件选型指南:方法论、架构与实践
  • 杭州量化局:DolphinDB 中泰XTP 技术沙龙
  • HarmonyOS 5开发从入门到精通(一):环境搭建与第一个Hello World应用