Так что я здесь, продолжая грузиться вместе с Растлингсом, пока я не получу в общих чертах тест 4.
Он хочет, чтобы я написал макрос, который будет удовлетворять следующему коду:
fn main() {
if my_macro!("world!") != "Hello world!" {
panic!("Oh no! Wrong output!");
}
}
Итак, я написал это:
macro_rules! my_macro {
($val:expr) => {
println!("Hello {}", $val);
}
}
И Рустлингс выплюнул это:
error[E0308]: mismatched types
--> exercises/test4.rs:15:31
|
15 | if my_macro!("world!") != "Hello world!" {
| ^^^^^^^^^^^^^^ expected (), found reference
|
= note: expected type `()`
found type `&'static str`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`.
Что, вы знаете.Я получил.Я понимаю, в чем проблема, но я не понимаю, как написать макрос, который будет удовлетворять коду.Я могу изменить код, с которым я тестирую, но это не то, чего хочет от меня тест.Я только для того, чтобы написать макрос.Я в тупике.Я также не понимаю, как инкапсуляция макроса в модуле должна помочь, но тест говорит, что это тест как для модулей, так и для макросов.