Как получить разрешение зависимости, аналогичное Cargo, в существующем проекте, где для анализа кода используется только rustc?
Книга Rust упоминает, что макросы могут быть расширены с помощью команды rustc --pretty expanded
, Я хотел бы использовать это для тестирования некоторых макросов, которые я написал в ящике, путем расширения файла примера командой
rustc -Z unstable-options --pretty expanded examples/macro_test.rs
macro_test.rs
будет иметь код, который выглядит так:
#[macro_use] extern crate macro_crate;
use macro_crate::macros::*;
macro_foo! { foo }
fn main() {}
Однако это приводит к ошибке 0463, которая заключается в том, что rustc
ничего не знает о среде ящика:
error[E0463]: can't find crate for `macro_crate`
--> examples/macro_test.rs:1:1
|
1 | extern crate macro_test;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
Какой рекомендуемый способ работы с этим? cargo
Насколько я могу судить, помощь не имеет ничего общего.
1 ответ
Решение
Груз имеет rustc
подкоманда для вызова rustc
с дополнительными аргументами.
$ cargo rustc --example macro_test -- -Z unstable-options --pretty expanded
Вы также можете добавить --verbose
перед --
чтобы получить груз распечатать полный rustc
командная строка (между прочим).