rust 中protobuf生成与使用

首先创建一个项目proto

 进入到这个文件夹中 创建我们的proto文件

初始化的项目结构是这个样子的

新建一个hello.proto文件内容如下

syntax = "proto3";

package hello;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

 修改Cargo.toml文件 我们需要加一下 我们需要的依赖包

[package]
name = "proto"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
prost = "0.7"
prost-types = { version = "0.7", optional = true }

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

创建一个build.rs 编写代码如下:

fn main() {
    prost_build::Config::new()
        .out_dir("src/pb")//设置proto输出目录
        .compile_protos(&["hello.proto"], &["."])//我们要处理的proto文件
        .unwrap();
}

由于我们的项目中没有pb的这个目录 需要手动创建一下,我们的整体结构如下

然后运行cargo build 结果如下

 查看在我们刚刚创建的pb文件夹下是否有一个hello.rs文件

 

在pb目录创建mod.rs文件 内容如下

pub mod hello;

 修改main.rs文件 内容如下:

use pb::hello;

mod pb;

fn main() {
    let request = hello::HelloRequest {
        name: "world".to_string(),
    };
    println!("request: {:?}", request);
}

执行cargo run

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

法规标准-ISO 20900标准解读

ISO 20900是做什么的? ISO 20900全名为智能交通系统-部分自动泊车系统(PAPS)-性能要求和试验程序,其中主要是对PAPS系统的功能要求、性能要求及测试步骤进行了介绍 PAPS类型 I类型PAPS系统反应 II类型PAPS系统反应 一般要求 运行期间的最大速度 系统…

PowerToys Windows 工具集

Microsoft PowerToys | Microsoft Learn Microsoft PowerToys:用于自定义 Windows 的实用工具 项目2023/04/1918 个参与者 反馈 Microsoft PowerToys 是一组实用工具,可帮助高级用户调整和简化其 Windows 体验,从而提高工作效率。 安装 …

移动端布局之流式布局1(百分比布局):流式布局基础、案例:京东移动端首页1

移动端布局之流式布局1 流式布局(百分比布局)基础案例:京东移动端首页搭建相关文件夹结构设置视口标签以及引入初始化样式normalize.css引入我们的css初始化文件与首页css body设置index.css app布局和app内容填充index.htmlindex.css 搜索模…

机器学习-4 决策树算法

决策树算法 算法概述分类算法与分类器决策树算法树模型决策树的原理决策树算法的关键决策树构造的基本思路 算法基本思想决策树的训练与测试三种经典的决策树生成算法基于信息增益的ID3算法基于信息增益率的C4.5算法C4.5算法C5.0算法 基于基尼系数的CART算法 算法流程算法关键问…

c语言之结构体(初阶)

目录 1:结构体类型的声明 2:结构体初始化 3:结构体成员访问 4:结构体传参 1:结构体类型的声明 1:为啥要有结构体,因为当我们描述一个复杂对象的时候,可能平时我们的一个类型不能…

二叉搜索树(查找、插入、删除的讲解实现+图文并茂)

目录 1. 二叉搜索树(BST) 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.2.1 二叉搜索树的查找 1.2.2 二叉搜索树的插入 1.2.3 二叉搜索树的删除 2. 二叉搜索树的实现 2.1BST基本结构 2.2 BST操作成员函数(非递归) 2.3 BST操作成员函数&#x…

一起学SF框架系列4.6-模块context-AbstractApplicationContext

org.springframework.context.ApplicationContext接口表示Spring IoC容器,负责实例化、配置和组装bean。容器通过读取配置元数据来获取关于实例化、配置和组装哪些对象的指令。配置元数据以XML、Java注释或Java代码表示。它允许您表达组成应用程序的对象以及这些对象…

在vite或者vue-cli中使用.env[mode]环境变量

在项目中总会遇到一些默认的配置,需要我们配置到静态文件中方便我们去获取,这时候就可以用到这个.env环境变量文件,在cli创建的项目中顶层的nodejs会有一个process对象,这个对象可以根据不同的环境获取不同的环境配置文件,但是vite中获取变量的方式不一样。 创建变量文件.env.…

NetApp AFF C 系列——可持续、可扩展且安全可靠的全闪存解决方案

NetApp AFF C 系列 采用全新的闪存技术,同时辅以智能科技加持,将为您带来一个更为经济实惠的全闪存解决方案,它重新定义了安全性、可扩展性和可持续性。 为什么选择 AFF C 系列的新一代全闪存解决方案? 实现现代化,打…

使用APIPOST 进行压力测试

使用APIPOST 进行压力测试 目录概述需求: 设计思路实现思路分析1.apipost 压力测试 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for c…

模拟集成电路设计-MOS器件物理基础(模集系列持续更新)

学习目的 欠缺的学习路径: 固体物理,半导体器件物理,器件模型,电路设计。所有的半导体器件都看成一个黑盒子,只关注端电压电流。 最佳的学习路径:两手抓,因为有些二阶效应会影响到电路本身. 本…

《Spring Guides系列学习》guide66 - guide68及小结

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gui…

Tatuk GIS Developer Kernel for .NET 11.77 Crack

Tatuk GIS Developer Kernel for .NET 是一个变体,它是受控代码和 .NET GIS SDK,用于为用户 Windows 操作系统创建 GIS 专业软件的过程。它被认为是一个完全用于 Win Forms 的 .NET CIL,WPF 的框架是为 C# 以及 VB.NET、VC、oxygen 以及最终与…

netty学习第一课

技术主题 Netty是一个基于Java NIO(非阻塞 I/O)框架的网络编程框架。它提供了一系列的高级网络编程API,使得开发者可以非常容易地实现高性能、高可靠性的网络应用。Netty具有非常好的可扩展性和灵活性,能够很好地支持多种协议和数…

数字图像处理①基于ADMM的全变分去噪算法

文章目录 1. Problem2. 仿真结果3. MATLAB算法4. 源码地址参考文献 1. Problem 在图像处理中,图像信号总会因为各种原因受到噪声的干扰,其中高斯噪声就是典型的干扰类型之一。 针对图像去噪的模型有很多种,其中全变分模型被认为是最有效的模…

linux中断

一 Linux中断原理 Linux中断(Interrupt)是指在计算机执行过程中,由于某些事件发生(例如硬件请求、错误、异常等),CPU暂停当前正在执行的程序,转而执行相应的处理程序的过程。中断是计算机多任务…

Flask+表格静态展示

Python网页开发(持续更新ing…) 诸神缄默不语-个人CSDN博文目录 本文的需求场景是:我现在有一个JSON格式的表格,这个具体格式不重要相信你们能看懂其他格式的表格怎么改。总之我想用PythonFlask提取这个表格,并展示在…

【网络编程一】初识网络:IP与端口号 网络模型

目录 🌟需要知道 一、基础概念 🌈1、IP地址与端口号 🌈2、五元组 二、协议分层 🌈1、OSI七层网络网络模型 🌈2、TCP/IP五层(四层)模型 🌈3、封装和分用(重点!) &…

软件测试基础篇

文章目录 一、软件测试的生命周期二、BUGBUG的描述BUG的级别BUG生命周期产生争执怎么办?如何开始第一次测试测试的执行和BUG的管理 一、软件测试的生命周期 软件测试的生命周期: 1.需求分析:需求是否完整,需求是否正确 2.测试计划&#xff…

串口屏-迪文10寸T5串口屏数据交互

效果演示 为了便于理解 建议先看上篇博客 点击跳转到上一篇博客 正式开始 1 打开DGUS 2 如图点击文本显示 数据变量 3 填写数据地址 按步骤操作 3-1 先点击框选1处 3-2 再点击框选2处改地址 我改的1000 3-3 设置完直接导出 插入U盘替换DWSET文件夹文件(这一步不理解去看上一…