“。” 在 Rust 模块标识符中

Tho*_*phy 2 protocol-buffers rust tonic grpc

关于 gRPC codegen 和 tonic(使用 protoc)的问题。

我使用的第三方原型的包名称如下thirdparty.specificpackage,例如:

syntax = "proto3";

package thirdparty.common;

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

service CommonService {
...
}
Run Code Online (Sandbox Code Playgroud)

和一个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"],
        )?;
Run Code Online (Sandbox Code Playgroud)

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

mod thirdparty.common不是有效的 Rust 标识符,因为.- 是否有最佳实践?

kmd*_*eko 5

如果无法合理控制或更改文件名,可以使用路径属性

#[path = "thirdparty.common.rs"]
mod thirdparty_common;
Run Code Online (Sandbox Code Playgroud)