Roy*_*son 9 build-script rust rust-cargo
我有以下文件结构:
src/
lib.rs
foo.rs
build.rs
Run Code Online (Sandbox Code Playgroud)
我想将一些东西从foo.rs(已经lib.rs有pub mod foo)导入到build.rs. (我正在尝试导入类型以便在构建时生成一些 JSON 模式)
这可能吗?
She*_*ter 15
您无法干净地 \xe2\x80\x94 构建脚本用于构建库,因此根据定义必须在构建库之前运行。
\n将类型放入另一个库并将新库导入到构建脚本和原始库中
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 the_library\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.rs\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 the_type\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\nRun Code Online (Sandbox Code Playgroud)\nthe_type/src/lib.rs
\npub struct TheCoolType;\nRun Code Online (Sandbox Code Playgroud)\nthe_library/Cargo.toml
\n# ...\n\n[dependencies]\nthe_type = { path = "../the_type" }\n\n[build-dependencies]\nthe_type = { path = "../the_type" }\nRun Code Online (Sandbox Code Playgroud)\nthe_library/build.rs
\n# ...\n\n[dependencies]\nthe_type = { path = "../the_type" }\n\n[build-dependencies]\nthe_type = { path = "../the_type" }\nRun Code Online (Sandbox Code Playgroud)\nthe_library/src/lib.rs
\nfn main() {\n the_type::TheCoolType;\n}\nRun Code Online (Sandbox Code Playgroud)\n使用类似#[path] mod ...或include!内容将代码包含两次。这基本上是纯粹的文本替换,因此非常脆弱。
pub fn thing() {\n the_type::TheCoolType;\n}\nRun Code Online (Sandbox Code Playgroud)\n构建.rs
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo.rs\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\nRun Code Online (Sandbox Code Playgroud)\nsrc/lib.rs
\n// One **exactly one** of this...\n#[path = "src/foo.rs"]\nmod foo;\n\n// ... or this\n// mod foo {\n// include!("src/foo.rs");\n// }\n\nfn main() {\n foo::TheCoolType;\n}\nRun Code Online (Sandbox Code Playgroud)\nsrc/foo.rs
\nmod foo;\n\npub fn thing() {\n foo::TheCoolType;\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3127 次 |
| 最近记录: |