rust使用protobuf

前言

c++,java,go 等直接是用 ,具体就不说了,这章主要讲述rust 使用protobuf
在这里插入图片描述

这章主要讲述2种
1 > protoc + protoc-gen-rust plugin
2> protoc + prost-build
在这里插入图片描述

1:环境
win10
rustrover64
25-2 下载地址 https://github.com/protocolbuffers/protobuf/releases
25-2 是rust 实验性的
纯粹用这个 出错了,这里先不讨论了,由解决的麻烦留个言我
在这里插入图片描述

3.3.0 golang编译的
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2:安装 测试
在这里插入图片描述
1> protoc + protoc-gen-rust plugin
安装插件
cargo install protobuf-codegen 生成protoc-gen-rust
或 用源码生成

执行
protoc --rust_out=. *.proto
生成
在这里插入图片描述
编译测试
toml 增加
[dependencies]
protobuf=“3.3”
在这里插入图片描述

2>protoc + prost-build
[dependencies]
prost=“0.12”
prost-types = “0.12”

[build-dependencies]
prost-build = { version = “0.12”}#,features = [“cleanup-markdown”]

在这里插入图片描述

build.rs 从网上抄来的

use std::process::Command;fn main() {//std::env::set_var("PROTOC", protobuf_src::protoc());//不增加下面一句 老是提示没权限,所以直接把环境变量写到这里std::env::set_var("PROTOC", "E:/work/protobuf/protobuf_proto/protoc"); //protoc_25_2 let mut config = prost_build::Config::new();config.bytes(&["."]);// 表示给生成的数据结构加上额外的trait,比如这里的: PartialOrd,表示对象实现排序traitconfig.type_attribute(".", "#[derive(PartialOrd)]");  //如果去掉这个比较属性,就没上面的比较重复的问题了config.out_dir("src/pb") //指定输出的目录.compile_protos(&["chat.proto"], &["."]) // 列举需要编译的文件.unwrap();// 下面表示调用系统cargo命令,并使用fmt进行标准代码格式化Command::new("cargo").args(&["fmt", "--", "src/*.rs"]).status().expect("cargo fmt failed");println!("proto files build finish.");
}

一个重复错误,手动修改下(因为加了 config.type_attribute(“.”, “#[derive(PartialOrd)]”); 这句,这个地方重复了)
在这里插入图片描述
编译运行
在这里插入图片描述
3:2种proto生成的 rs内容真不一样
在这里插入图片描述
4:DEMO工程 后续如有需要再上传
如果觉得有用,麻烦点个赞,加个收藏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414868.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数基础【5】特征值和特征向量

第五章 特征值和特征向量 第一节、特征值和特征向量的基本概念 一、特征值和特征向量的理论背景 在一个多项式中,未知数的个数为任意多个,且每一项次数都是2的多项式称为二次型,二次型分为两种类型:即非标准二次型及标准二次型 注意: ①二次型X^T AX为非标准二次型的充分必…

Git学习笔记(第3章):Git常用命令

目录 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地库状态 3.4 添加暂存区 3.5 提交本地库 3.6 历史版本 3.7 修改文件 3.8 版本穿梭 小结 命令 作用 git config --global user.name 用户名 设置用户签名 git config --global user.email 邮箱 设置用户签名 …

大模型学习与实践笔记(六)

一、finetune 简介 两种微调模式:增量预训练 与指令跟随 1.增量预训练 2.指令微调 二、LoRA 与 QLoRA 介绍 三、XTuner 介绍 四、低显存玩转LLM的方法

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1)基于查询的 CDC 和基于日志的 CDC2)Flink CDC3)Flink CDC原理简述4)基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

OR-343,IGBT驱动光耦,替代ACPL-W343,TLP5702等

OR-343 具有MOSFET高输入阻抗和GTR低导通压降特性提供隔离反馈 高隔离电压 4.0 A 最大峰值输出电流 3.0 A 最小峰值输出电流 工业温度范围:–40C 至 105C 宽工作 VCC 范围 特征 轨到轨输出电压 。 带迟滞的 LED 电流输入 ICC(最大值&#xff…

Ubuntu下将nvidia-smi封装为GUI界面,实时查看显卡信息

和win系统不同的是,在Ubuntu端,系统级的系统监视器中,只能查看内存、CPU和网络状态,并不能查看GPU状态 而使用NVIDIA显卡的朋友都知道一条指令 nvidia-smi 在终端运行后即可查看显卡信息、资源占用情况等 但是这样会占用终端&am…

C Primer Plus 第6版 编程练习 chapter 16

文章目录 1. 第1题1.1 题目描述1.2 编程源码1.3 结果显示 2. 第2题2.1 题目描述2.2 编程源码2.3 结果显示 3. 第3题3.1 题目描述3.2 编程源码3.3 结果显示 4. 第4题4.1 题目描述4.2 编程源码4.3 结果显示 5. 第5题5.1 题目描述5.2 编程源码5.3 结果显示 6. 第6题6.1 题目描述6.…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 理论题

竞赛需要完成三个阶段的任务,分别完成三个模块,总分共计 1000分。三个模块内容和分值分别是: 1.第一阶段:模块一 网络平台搭建与设备安全防护(180 分钟,300 分)。 2.第二阶段:模块二…

新手也能看懂的【前端自动化测试入门】!

前言 最近在网上搜索前端自动化测试相关的文档,但是发现网上的文章都是偏使用,没有把一些基础概念说清楚,导致后续一口气遇到一些karma、Jasmine、jest、Mocha、Chai、BDD等词汇的时候很容易一头雾水,这次一方面整理一下收获的知…

深入探究 JavaScript 中的 String:常用方法和属性全解析(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

问题解决:No module named ‘apex‘,apex安装

最近Git了一个别人的程序,跑的过程中遇到了报错: No module named apex 关于Apex,官方介绍是:该资源库包含英伟达维护的实用程序,用于简化 Pytorch 中的混合精度和分布式训练。这里的部分代码最终将被纳入 Pytorch …

某ttEncrypt算法的简单分析

捣鼓背景 其实就是今晚无聊整个乐子打发一下时间了吧??? - - 害,真实的原因是发现身边的大佬不是已经分析完某x了,就是在分析的路上了。再不跟上大佬的步伐,估计以后车尾灯都看不到了,再想抱…