rust - 如何在另一个项目中生锈宏?
问题描述
嗨,是否可以在多个项目中使用自定义声明性宏?如果是,如何?
项目树结构如下:(宏在proj1中定义)
.
├── proj1
│ ├── Cargo.toml
│ └── src
│ └── main.rs
├── proj2
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── proj3
├── Cargo.toml
└── src
└── main.rs
解决方案
proj1
需要成为混合 bin/lib 箱,您才能使用其中的宏。这意味着将您的宏移动到proj1/src/lib.rs
. 但是,我建议您将常用功能移至不同的 crate,我们称之为lib1
. 其余的已经详细描述了,所以这里只是一个快速演示:
cargo new --lib lib1
cargo new proj2
echo 'lib1 = { path = "../lib1" }' >>proj2/Cargo.toml
echo '#[macro_export] macro_rules! mahcro { () => { println!("Hello macro.") } }' >lib1/src/lib.rs
echo 'use lib1::mahcro; fn main() { mahcro!() }' >proj2/src/main.rs
cargo run --manifest-path proj2/Cargo.toml
顺便说一句,工作区在这种设置中非常有用,我建议您阅读它们。
推荐阅读
- python - 有没有更好的方法来组织 Python (3.6.2) 文件?
- r - 如何使用一维数据框在ggplot aes中设置x,y?
- c - 清除错误输入
- c++ - 如何在 C++ 中计算字符数组中的单词
- word2vec - 判断文本或句子在内容上是等价的
- r - 在 R 数据框中将 fctr 转换为 dbl
- vue-chartjs - Vue-chartjs 使我的响应式图表对我的窗口来说太高了
- java - 为什么我必须为这个迷宫使用 do-while 循环?
- python - 当有更多任务时,许多分布式 dask 工作人员在一次评估后闲置,或者从未收到任何工作
- c - 如何在 Windows 中为 Python 3.7 编译 C 扩展