rust使用protobuf

这篇具有很好参考价值的文章主要介绍了rust使用protobuf。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

c++,java,go 等直接是用 ,具体就不说了,这章主要讲述rust 使用protobuf
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf

这章主要讲述2种
1 > protoc + protoc-gen-rust plugin
2> protoc + prost-build
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf

1:环境
win10
rustrover64
25-2 下载地址 https://github.com/protocolbuffers/protobuf/releases
25-2 是rust 实验性的
纯粹用这个 出错了,这里先不讨论了,由解决的麻烦留个言我
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf

3.3.0 golang编译的
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf

rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
2:安装 测试
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
1> protoc + protoc-gen-rust plugin
安装插件
cargo install protobuf-codegen 生成protoc-gen-rust
或 用源码生成

执行
protoc --rust_out=. *.proto
生成
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
编译测试
toml 增加
[dependencies]
protobuf=“3.3”
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf

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

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

rust使用protobuf,杂项,rust 学习,rust,后端,protobuf

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,表示对象实现排序trait
    config.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)]”); 这句,这个地方重复了)
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
编译运行
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
3:2种proto生成的 rs内容真不一样
rust使用protobuf,杂项,rust 学习,rust,后端,protobuf
4:DEMO工程 后续如有需要再上传
如果觉得有用,麻烦点个赞,加个收藏
文章来源地址https://www.toymoban.com/news/detail-809210.html

到了这里,关于rust使用protobuf的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从零开始的rust web开发之路 一】axum学习使用

    第一章 axum学习使用 本职java开发,兼架构设计。空闲时间学习了rust,目前还不熟练掌握。想着用urst开发个web服务,正好熟悉一下rust语言开发。 目前rust 语言web开发相关的框架已经有很多,但还是和java,go语言比不了。 这个系列想完整走一遍web开发,后续有时间就出orm,还

    2024年02月12日
    浏览(47)
  • [golang 微服务] 3. ProtoBuf认识,安装以及golang 中ProtoBuf使用

    在移动互联网时代, 手机流量 、 电量 是最为有限的资源,而移动端的即时通讯应用无疑必须得直面这两点。解决流量过大的基本方法就是 使用高度压缩的 通信协议 ,而数据压缩后流量减小带来的自然结果也就是省电:因为大数据量的传输必然需要 更久的网络操作 、 数据

    2024年02月10日
    浏览(35)
  • Unity使用Protobuf

    测试例子 运行结果 具体的运行和设计根据项目而定吧 好像也没啥要写的了 哈哈哈

    2024年01月18日
    浏览(31)
  • idea使用protobuf

    本文参考:https://blog.csdn.net/m0_37695902/article/details/129438549 再次感谢分享 什么是 protobuf ? Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。 由于protobuf是跨语言的,所以用不同的语言序列化对象后,生成一段字节码,之后可以其他任何语言反

    2024年02月14日
    浏览(23)
  • Protobuf的简单使用

            Protobuf是一种用于序列化结构化数据的二进制格式,它是一种语言无关、平台无关、可扩展的数据交换格式。主要用途包括数据传输、数据存储和通信协议等。         与JSON和XML相比,Protobuf的优点包括更高的性能、更小的数据体积和更简单的消息定义。劣势

    2024年02月09日
    浏览(22)
  • 使用脚本收发 protobuf 协议数据

    最近做了一个 ipv6 相关的功能,发现使用 getifaddrs 获取的本地 ipv6 地址有可能不是真实的网络 ipv6 地址: 例如上图中通过 getifaddrs 获得了多个本地 ipv6 地址,其中 fe80 开头的已知是本地 ipv6 地址,被排除;还有 2408 这种,其实也是 \\\"假 ipv6\\\" 地址,对应的设备并不能访问 ipv6

    2024年02月08日
    浏览(35)
  • Unity使用C# Protobuf源码

    目录 第一步:下载源码 第二步:运行C#构建文件  第三步:处理报错(如果你已安装对应的SDK则不会报错) 第四步:复制库文件到你的工程 protobuf github源码 https://github.com/protocolbuffers/protobuf 下载后解压源码,得到文件夹protobuf-main protobuf的源码在protobuf-maincsharpsrc里,但不要

    2024年02月13日
    浏览(29)
  • Unity之C#端使用protobuf

    protobuf全称Protocol Buffers,由Google推出的一种平台、语言无关的数据交互格式,目前使用最广泛的一种数据格式,尤其在网络传输过程中,有很强的安全性,而且数据量比json和xml要小很多。 最主要的是protobuf支持的语言非常多,不管你是.net,java,lua,iOS,android,python,go,等

    2023年04月09日
    浏览(28)
  • Ubuntn下安装protobuf和使用详解

    ubuntn 20.04 protobuf v3.19.4 这里有两种方式安装,一种是通过apt方法安装,另外一种是通过下载源码进行编译安装,这里使用编译源码安装方式 下载protobuf 版本为tobuf v3.19.4 2.解压 protobuf-all-3.19.4.tar.gz 3.编译安装 4、配置环境变量和动态连接库 更改环境变量: vim /etc/profile 在文件

    2024年02月06日
    浏览(22)
  • vs2019 中编译和使用 protobuf 库

    protobuf 是一种跨平台的序列化结构数据的方法,可用于网络数据传输及存储。 本文对使用 vs2019 编译 protobuf 库文件进行说明,相关代码及安装文件均来自官网下载。 ①.生成 sln 工程文件 打开 cmake ,然后选择 protobuf-v3.19.4 目录中的 cmake 文件夹 单击 configure 按钮,在打开界面

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包