gpt4 book ai didi

rust - tonic_build 添加/使用外部 crate ,如 serde

转载 作者:行者123 更新时间:2023-12-05 05:37:35 26 4
gpt4 key购买 nike

我正在尝试使用或添加外部创建(如 serde)到 build.rs 文件,tonic_build 将使用该文件从 .proto 文件生成 .rs 文件。

// build.rs file 
let proto_file = "src/hello/hello.proto";

tonic_build::configure()
.build_server(true)
.out_dir("./src/hello")
.type_attribute("HelloRequest", "#[derive(Deserialize, Serialize)]") // adding attributes
.compile(&[proto_file], &["."])
.unwrap_or_else(|e| panic!("protobuf compile error: {}", e));

我可以看到属性已添加到 rust 文件中,如下所示:

#[derive(Deserialize, Serialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HelloRequest {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub message: ::prost::alloc::string::String,
}

但文件没有添加:use serde::{Serialize, Deserialize}; 导致构建失败。我尝试使用 server_mod_attribute 但失败了。如何使用 tonic_build 添加 use serde::{Serialize, Deserialize} 到自动生成的 .rs 文件?

最佳答案

你可以使用库的完整路径

.type_attribute("HelloRequest", "#[derive(serde::Deserialize, serde::Serialize)]")

关于rust - tonic_build 添加/使用外部 crate ,如 serde,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73090493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com