一个关于GRPC编解码元和引擎盖下的奎宁(使用proc)的问题.

我使用的第三方协议具有类似thirdparty.specificpackage的包名称,例如:

syntax = "proto3";

package thirdparty.common;

import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";

service CommonService {
...
}

一个build.rs,看起来像这样:

tonic_build::configure()
        .protoc_arg("--experimental_allow_proto3_optional") // for older systems
        .build_client(true)
        .build_server(true)
        .out_dir("./src")
        .compile(
            &[
                "src/myprotoproject/protos/services/decision_engine.proto"],
            &["src"],
        )?;

从我的cargo build生成的代码被命名为thirdparty.common.rs-如何将其导入到我的Rust代码中?

mod thirdparty.common不是有效的铁 rust 标识,因为.--有没有解决这一问题的最佳实践?

推荐答案

如果您不能合理地控制或更改文件名,可以使用path attribute:

#[path = "thirdparty.common.rs"]
mod thirdparty_common;

Rust相关问答推荐

rust 蚀将动力特性浇到混凝土 struct 上是行不通的

将已知大小的切片合并成一个数组,

如何将`Join_all``Vec<;Result<;Vec<;Foo&>;,Anywhere::Error&>;`合并到`Result<;Vec<;Foo&>;,Anywhere::Error&>;`

当一个箱子有自己的依赖关系时,两个人如何克服S每箱1库+n箱的限制?

如何实现泛型枚举的`Serde::Desialize`特性

在析构赋值中使用一些现有绑定

避免在Collect()上进行涡鱼类型的涂抹,以产生<;Vec<;_>;,_>;

作为1字节位掩码的布尔值 struct

如何创建一个可变的嵌套迭代器?

如何初始化选项<;T>;数组Rust 了?

为什么rustc会自动降级其版本?

为什么我必须使用 PhantomData?在这种情况下它在做什么?

实现 Deref 的 struct 可以返回对外部数据的引用吗?

存储返回 impl Trait 作为特征对象的函数

如何获取模块树?

为什么数组不像向量那样在 for 块之后移动?

为什么 i32 Box 类型可以在 Rust 中向下转换?

没有分号的返回表达式的性能是否比使用返回更好?在Rust ?

在单独的线程上运行 actix web 服务器

Rust 内联 asm 中的向量寄存器:不能将 `Simd` 类型的值用于内联汇编