Я пишу тест для макроса, который хочу экспортировать. Тест работает до тех пор, пока я сохраняю свои тесты в одном файле, но как только я поместил модуль тестов в отдельный файл, я получаю сообщение об ошибке.Macro undefined, когда тестовый модуль перемещается в отдельный файл
экспорт/SRC/lib.rs
pub mod my_mod {
#[macro_export]
macro_rules! my_macro {
($x:expr) => { $x + 1 };
}
pub fn my_func(x: isize) -> isize {
my_macro!(x)
}
}
экспорт/тесты/lib.rs
#[macro_use]
extern crate export;
mod my_test_mod {
use export::my_mod;
#[test]
fn test_func() {
assert_eq!(my_mod::my_func(1), 2);
}
#[test]
fn test_macro() {
assert_eq!(my_macro!(1), 2);
}
}
Запуск cargo test
указывает на то, что оба испытания прошли. Если я извлечу my_test_mod
в файл, он больше не компилируется.
экспорт/SRC/lib.rs
Неизменённые
экспорт/тесты/lib.rs
#[macro_use]
extern crate export;
mod my_test_mod;
экспорт/тесты/my_test_mod.rs
use export::my_mod;
#[test]
fn test_func() {
assert_eq!(my_mod::my_func(1), 2);
}
#[test]
fn test_macro() {
assert_eq!(my_macro!(1), 2); // error: macro undefined: 'my_macro!'
}
Это дает мне ошибку, что макрос не определен.
@LukasKalbertodt У этого объекта, похоже, есть макрос_экспорт и макрос импортируется до его использования; ум, соединяющий точки с дубликатом для меня? – Shepmaster
@Shepmaster Nevermind, моя ошибка. Был уставшим ;-) –