Rust 编程——prost-build 使用

Prost是一个用于生成Rust语言中的Protocol Buffers定义的库。而prost-build是Prost库的一个工具,用于生成Rust代码。Protocol Buffers是由Google开发的一种轻量级、高效的数据交换格式,可以用于结构化数据的序列化,特别适用于通信协议和数据存储等领域。

prost-build工具通过读取Protobuf文件(.proto文件)并根据文件中定义的消息类型、服务等生成相应的Rust代码。这些生成的Rust代码可用于在Rust项目中使用Protocol Buffers定义的数据结构和服务。

要使用prost-build,首先需要在Rust项目的Cargo.toml文件中添加相应的依赖:

[dependencies]
bytes = "0.4"
prost = "0.5"

[build-dependencies]
prost-build = "0.5"

然后,创建一个build.rs文件,用于配置和运行prost-build工具:
build.rs文件与Cargo.toml同级

extern crate prost_build;

fn main() {
    // prost_build::compile_protos(&["src/items.proto"], &["src/"]).unwrap();
    prost_build::Config::new()
        .out_dir("src/pb")
        .compile_protos(&["src/abi.proto"], &["src/"])
        .unwrap();
}

在src下创建pb文件夹,用于输出结果。
创建abi.proto文件:

syntax = "proto3";

package snazzy.items;

// A snazzy new shirt!
message Shirt {
    enum Size {
        SMALL = 0;
        MEDIUM = 1;
        LARGE = 2;
    }

    string color = 1;
    Size size = 2;
}

其中,src/abi.proto是你的Protobuf文件的路径,src/pb是生成的Rust代码的输出目录。

运行cargo build时,prost-build工具会自动读取Protobuf文件并生成相应的Rust代码,并将生成的代码放置在指定的输出目录中。

注意坑点

1.build.rs文件是否与Cargo.toml同级
2.是否在项目跟目录下运行cargo build
3.是否安装protoc并配置环境变量。

相关推荐

  1. Rust 编程——prost-build 使用

    2024-06-09 12:46:04       5 阅读
  2. Go Build编译打包文件

    2024-06-09 12:46:04       26 阅读
  3. UNITY BUILD加速cmake 编译

    2024-06-09 12:46:04       29 阅读
  4. rust编程

    2024-06-09 12:46:04       11 阅读
  5. Rust编程(一)

    2024-06-09 12:46:04       13 阅读
  6. Rust编程入门教程

    2024-06-09 12:46:04       13 阅读
  7. Rust 异步编程

    2024-06-09 12:46:04       0 阅读
  8. rust实现一个post小程序

    2024-06-09 12:46:04       12 阅读

最近更新

  1. python 多线程条件竞争利用失败print不显示的原因

    2024-06-09 12:46:04       0 阅读
  2. 与君共勉:坚持+努力

    2024-06-09 12:46:04       0 阅读
  3. ReentrantLock与AQS:深入剖析多线程同步的艺术

    2024-06-09 12:46:04       0 阅读
  4. 快速上手:如何在npm发布自己的插件包

    2024-06-09 12:46:04       0 阅读
  5. 数值分析笔记(一)误差及其传播

    2024-06-09 12:46:04       0 阅读
  6. C++11中的类型推演工具decltype

    2024-06-09 12:46:04       0 阅读
  7. C++入门小结

    2024-06-09 12:46:04       0 阅读
  8. 【星海出品】Linux大文件处理

    2024-06-09 12:46:04       0 阅读

热门阅读

  1. 速盾:ddos防护与高防ip区别?

    2024-06-09 12:46:04       3 阅读
  2. 贪心算法详解

    2024-06-09 12:46:04       3 阅读
  3. 自然语言处理(NLP)—— rasa的测试

    2024-06-09 12:46:04       4 阅读
  4. 支持向量机(SVM): 从理论到实践的指南(1)

    2024-06-09 12:46:04       4 阅读
  5. Web前端Text:深入解析与实践应用

    2024-06-09 12:46:04       4 阅读
  6. 多关键字排序

    2024-06-09 12:46:04       5 阅读
  7. opencv

    opencv

    2024-06-09 12:46:04      4 阅读
  8. HTML5表单元素:重塑数据收集的艺术

    2024-06-09 12:46:04       2 阅读
  9. 面试高频问题----6

    2024-06-09 12:46:04       4 阅读
  10. ssh版本升级

    2024-06-09 12:46:04       3 阅读