当前位置: 首页 > 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.jsqmd.com/news/21537/

相关文章:

  • 0271-GRPC-prost 带长度的编解码
  • 2025 年坡口机源头厂家最新推荐排行榜:欧盟 CE 认证企业领衔,含 15 年工业服务经验品牌,自走式/自动/板材/管道坡口机厂家推荐
  • 0270-GRPC-使用 prost 解码
  • 完整教程:Java开发者进阶之路
  • 动手动脑4
  • 2025 年保温涂料厂家最新推荐排行榜:聚焦技术专利与管理体系认证的优质品牌耐高温/防火耐热/防腐/纳米介孔微珠中空粒子保温涂料公司推荐
  • 实战练习:小软件页面间跳转传值 子页面数据渲染
  • 2025年云南独立成团游公司权威推荐榜单:云南旅游团/云南私享之旅/云南专属行程游源头公司精选
  • 2025 年气凝胶生产厂家最新推荐排行榜:含气凝胶毡 / 粉 / 隔热板 / 保温罩 / 陶瓷板品牌,优质厂家推荐
  • 2025年5.5KW工业吸尘器厂家权威推荐榜单:380V防爆吸尘器/7.5KW工业吸尘器/水浴式吸尘器源头厂家精选
  • 2025 年兰州凯文中学推荐:兰州凯文中学,二十载深耕民办教育 双师赋能全维育人 以低进高出成效书写成长答卷
  • 详细介绍:Uvicorn - Python ASGI Web 服务器
  • OpenEuler 22.03 手动升级 OpenSSH 至 10.2p1 完整方案
  • 配置GOPRIVATE引用私有仓库
  • 2025年3d全息投影生产厂家权威推荐榜单:全息投影展厅/全息投影沙盘/全息投影源头厂家精选
  • github克隆别人的项目并创建环境安装子模块 - 教程
  • JMeter Plugin Manager Linux 插件安装命令行
  • 用AI“抄底”双十一
  • 整体理解pai0-具身智能-PyTorch einsum 完全教程-11 - jack
  • 2025年北京奢侈品品牌首饰回收公司权威推荐榜单:钻石回收/黄金回收/钻戒回收源头公司精选
  • 查询每门成绩都大于80分的同学学号
  • 【C++】函数参数传递
  • C++ lambd表达式
  • NVIDIA与Adobe漏洞深度解析
  • 监督学习、无监督学习、半监督学习、强化学习、自监督学习
  • 2025 年退磁器生产厂家最新推荐榜:技术创新、行业适配与服务保障全景对比及权威测评结果强力退磁器/手提退磁器/小型退磁器公司推荐
  • 计算机组成原理:磁盘存储设备 - 实践
  • 2025 年最新推荐辊涂机源头厂家推荐榜单:UV 漆 / 玻璃 / 铝板 / 木门 / PVC 地板辊涂机优质企业全解析
  • 【哲学思考】:规则
  • 2025.10.24第一节课内容