尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

rust使用protobuf

rust使用protobuf
📅 发布时间:2026/6/20 14:10:16

安装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>,
}

相关新闻

  • 蒸汽轮机在线监测:燃气电厂高效运转的“二当家”与隐形守护者
  • 青云卫找谁买:复购率90%!老客私藏选购路径曝光 - 品牌测评家
  • 破局AI搜索流量困局:Deepseek优化核心服务商深度解析 - 品牌推荐排行榜

最新新闻

  • Kimi API开源能力解析与工程化接入实战指南
  • 【JAVA毕设源码分享】springboot基于敏捷开发的项目管理系统(程序+文档+代码讲解+一条龙定制)
  • 2026年靠谱的矿用圆环链用开口式连接环/山东矿用高强度圆环链/圆环链弧齿环/山东圆环链锯齿环多家厂家对比分析 - 行业平台推荐
  • TRK-MPC5604P开发板硬件配置与调试实战指南
  • 嵌入式GUI开发利器:emWin仿真工具从入门到精通实战指南
  • 谱截断归一化MMD:高效分布比较的核方法优化

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号