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

0273-GRPC-tonic 进行编解码

环境

  • Time 2022-12-11
  • WSL-Ubuntu 22.04
  • tonic 0.8

前言

说明

参考:https://github.com/hyperium/tonic/tree/master/examples/src/helloworld

目标

使用 tonic 来处理 protobuf 编码和解码。

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"
tonic = "0.8"[build-dependencies]
tonic-build = "0.8"

build.rs

use std::io::Result;fn main() -> Result<()> {tonic_build::configure().out_dir("src/proto")// 处理 clippy 警告的问题.type_attribute(".", "#[derive(Eq)]").compile(&["proto/user.proto"], &["proto/"])?;Ok(())
}

mod.rs

mod user;pub use user::*;

user.rs

/// 用户
#[derive(Eq)]
#[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

use prost::Message;mod proto;fn main() -> std::io::Result<()> {let user = proto::User {id: 1,name: "JiangBo".to_string(),age: 44,};let encode = user.encode_to_vec();let user = proto::User::decode(encode.as_ref())?;dbg!(user);Ok(())
}

运行结果

[src/main.rs:14] user = User {id: 1,name: "JiangBo",age: 44,
}

总结

使用 tonic 来进行编码和解码的处理。

附录

http://www.gsyq.cn/news/29588.html

相关文章:

  • 0271-GRPC-prost 带长度的编解码
  • 0270-GRPC-使用 prost 解码
  • 动手动脑4
  • python+request+unittest自动化测试
  • 2025 年保温涂料厂家最新推荐排行榜:聚焦技术专利与管理体系认证的优质品牌耐高温/防火耐热/防腐/纳米介孔微珠中空粒子保温涂料公司推荐
  • 2025年云南独立成团游公司权威推荐榜单:云南旅游团/云南私享之旅/云南专属行程游源头公司精选
  • 2025年5.5KW工业吸尘器厂家权威推荐榜单:380V防爆吸尘器/7.5KW工业吸尘器/水浴式吸尘器源头厂家精选
  • OpenEuler 22.03 手动升级 OpenSSH 至 10.2p1 完整方案
  • 配置GOPRIVATE引用私有仓库
  • 2025 年最新推荐辊涂机源头厂家推荐榜单:UV 漆 / 玻璃 / 铝板 / 木门 / PVC 地板辊涂机优质企业全解析
  • 2025.10.24第一节课内容
  • 【IEEE出版 | 高届数会议 | 上届已于会后3个多月完成见刊检索】2025第九届控制工程与国际论坛(IWCEAA 2025)
  • SQLServer截取字符串、字符串长度、特殊字符在字符串的下标索引
  • QT的事件循环(一)
  • 完整教程:构建并运行最小 Linux 内核
  • word批量转pdf
  • 解决Qt 不能debug问题
  • Exadata数据库性能异常,备份进程卡住
  • 做本地门户网站 10 年,我靠微擎摆脱了 “客户需求五花八门” 的噩梦
  • 熟知大模型中mcp概念 --by zk
  • 2025年一体化雨水提升泵站厂家权威推荐榜单:污水提升泵站/一体化污水泵站/一体化雨水泵站源头厂家精选
  • 【开题答辩全过程】以 “辛巴克餐饮”小程序为例,具备答辩的问题和答案
  • 读书笔记:解锁数据库查询新姿势:函数索引让你的搜索又快又准
  • 2025年教室护眼灯厂家权威推荐榜单:led教室灯/幼儿园教室灯/教室照明灯具源头厂家精选
  • 在MCUXpresso IDE中建立使用静态库的工程 - 指南
  • Ollama大模型推理场景下3090和4090性能实测
  • 2025 年最新推荐河道护栏源头厂家口碑榜,聚焦全流程服务与高性价比之选铝合金/绳索/不锈钢河道护栏公司推荐
  • 2025 年管道修补器源头厂家最新推荐排行榜:揭秘行业内具备全流程管控能力的靠谱厂商及优质产品选型指南加长/铸铁/弯头/卡箍式管道修补器公司推荐
  • 信号(Signal)、信号量(Semaphore)
  • 详细介绍:Go 和云原生 的现状和发展前景