最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Rust中Protobuf使用詳解

 更新時間:2025年11月11日 09:38:04   作者:alwaysrun  
本文介紹了如何在Rust中使用Protobuf進行序列化和反序列化,并介紹了如何在項目中使用生成的Rust代碼,通過include!宏和mod.rs文件的配置,可以方便地在Rust項目中使用Protobuf,感興趣的朋友跟隨小編一起看看吧

Protobuf(Protocol Buffers)是 Google 推出的高效序列化協(xié)議;Rust中,prost 是最主流的 Protobuf 實現(xiàn),提供了編譯期代碼生成和運行時序列化/反序列化能力。

工具與環(huán)境

必備工具:

  • protoc:Protobuf 官方編譯器(負責解析 .proto 文件)
  • prost:Rust 的 Protobuf 運行時庫(提供序列化 / 反序列化邏輯)
  • prost-build:Rust 的 Protobuf 編譯工具(集成 protoc,生成 Rust 代碼)

windows下protoc安裝(winget方式):

  1. winget search protoc
  2. winget install Google.Protobuf
  3. protoc --version:# 輸出 libprotoc 33.0 或更高版本即可

項目中使用

配置Cargo.toml

添加prost與prost-build的依賴,

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

proto文件

在項目中添加proto/hello.proto文件:

syntax = "proto3";
package hello;
message MyMessage {
  string name = 1;
  int32 id = 2;
}

build腳本

在項目根目錄添加build.rs用于把proto文件編譯為rs文件:

  • out_dir:設定編譯rs文件存放位置(如"src/pb"下);
  • compile_protos:編譯
    • 第一個參數(shù)為要編譯proto文件(包含相對目錄);可以指定多個proto文件
    • 第二個參數(shù)proto所在路徑
use prost_build;
fn main() {
    println!("cargo:rerun-if-changed=hello.proto");
    // try create the output folder
    std::fs::create_dir_all("src/pb").expect("Failed to create output directory");
    // compile the proto file
    prost_build::Config::new()
        .out_dir("src/pb")
        .compile_protos(&["proto/hello.proto"], &["proto/"])
        .expect("Failed to compile proto files");
}

build成功后,會在src/pb下創(chuàng)建hello.rs(與proto文件中的package名稱相同)文件。

使用proto

生成rs文件后,即可使用:

  • 通過include!宏,直接包含對應rs文件
  • 通過use引入
    • 在pb下創(chuàng)建mod.rs,并添加pub mod hello;
    • 在main中引入:mod pb; use pb::hello::MyMessage;
// include!("pb/hello.rs");
mod pb;
use pb::hello::MyMessage;
use prost::Message;
fn main() {
    let msg = MyMessage {
        name: "Protobuff example".to_string(),
        id: 123,
    };
    let encoded = msg.encode_to_vec();
    println!("Encoded Msg: {:?}", encoded);
    let decoded = MyMessage::decode(&encoded[..]).unwrap();
    println!("Decoded Msg: {:?}", decoded);
}

到此這篇關(guān)于Rust中Protobuf使用簡介的文章就介紹到這了,更多相關(guān)Rust Protobuf使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • Rust 中引用模式與值模式的對比實踐指南

    Rust 中引用模式與值模式的對比實踐指南

    文章詳細介紹了Rust中的引用模式和值模式的區(qū)別,包括它們在所有權(quán)、生命周期、性能、內(nèi)存影響以及實際應用中的選擇建議,通過對比和實際代碼示例,幫助讀者理解如何根據(jù)具體需求選擇合適的模式,從而寫出高效且正確的Rust代碼,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • rust 如何使用文件鎖防止應用多開

    rust 如何使用文件鎖防止應用多開

    這篇文章主要介紹了rust 如何使用文件鎖防止應用多開,本文給出了進程只能單開的方法,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • vscode搭建rust開發(fā)環(huán)境的圖文教程

    vscode搭建rust開發(fā)環(huán)境的圖文教程

    Rust 是一種系統(tǒng)編程語言,它專注于內(nèi)存安全、并發(fā)和性能,本文主要介紹了vscode搭建rust開發(fā)環(huán)境的圖文教程,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 深入了解Rust中的枚舉和模式匹配

    深入了解Rust中的枚舉和模式匹配

    這篇文章主要為大家詳細介紹了Rust中的枚舉和模式匹配的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • Rust并發(fā)之異步編程應用教程

    Rust并發(fā)之異步編程應用教程

    這篇文章主要介紹了Rust并發(fā)之異步編程應用教程,Rust的異步編程是一種強大的并發(fā)編程范式,它允許我們編寫高效、響應迅速的應用程序,通過掌握異步編程的高級應用,我們可以充分利用系統(tǒng)資源,提高應用程序的性能,需要的朋友可以參考下
    2026-05-05
  • 一文帶你掌握Rust中的字符串與切片

    一文帶你掌握Rust中的字符串與切片

    字符串與切片是所有新手遇到的第一個門檻,不同于?Java、Python?等語言對字符串的高度封裝,Rust?的字符串與切片深度綁定了所有權(quán)、借用、生命周期與?UTF-8?編碼,下面小編就和大家詳細介紹一下吧
    2026-03-03
  • 詳解Rust語言中anyhow的使用

    詳解Rust語言中anyhow的使用

    anyhow是一個Rust庫,用于簡化錯誤處理和提供更好的錯誤報告,這個庫適合用于應用程序,而不是用于創(chuàng)建庫,因為它提供了一個非結(jié)構(gòu)化的,方便使用的錯誤類型,本文就給大家講講Rust語言中anyhow的使用,需要的朋友可以參考下
    2023-08-08
  • Rust?連接?PostgreSQL?數(shù)據(jù)庫的詳細過程

    Rust?連接?PostgreSQL?數(shù)據(jù)庫的詳細過程

    這篇文章主要介紹了Rust?連接?PostgreSQL?數(shù)據(jù)庫的完整代碼,本文圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • Rust獲取命令行參數(shù)及IO操作方法

    Rust獲取命令行參數(shù)及IO操作方法

    Rust作為一門系統(tǒng)編程語言,提供了強大且安全的I/O操作支持,本文給大家介紹Rust獲取命令行參數(shù)以及IO操作,感興趣的朋友一起看看吧
    2025-06-06
  • 從入門到精通詳解Rust錯誤處理完全指南

    從入門到精通詳解Rust錯誤處理完全指南

    這篇文章主要為大家詳細介紹了Rust中錯誤處理的相關(guān)方法和技巧,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一
    2025-12-12

最新評論

平度市| 宜阳县| 广南县| 阜宁县| 平武县| 如东县| 沐川县| 青铜峡市| 佛坪县| 平谷区| 柳林县| 武陟县| 岐山县| 合水县| 曲沃县| 西城区| 浦江县| 沙坪坝区| 长葛市| 商城县| 克拉玛依市| 阳信县| 海南省| 尉氏县| 临夏县| 罗定市| 岢岚县| 安丘市| 星座| 寿阳县| 布尔津县| 舒兰市| 农安县| 华阴市| 烟台市| 乳源| 华蓥市| 于都县| 无为县| 中卫市| 金堂县|