所以我在这里,与Rustlings一起运输,直到我对测试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`.
哪个,你知道。知道了我知道问题出在哪里,但我不明白如何编写满足代码要求的宏。我可以更改要测试的代码,但这不是测试要我做的。我只是写一个宏。我很沮丧我也不明白将宏封装在模块中将有什么帮助,但是测试表明这是对模块以及宏的测试。
答案 0 :(得分:1)
/* istanbul ignore next */
}).then(res => res.json())
将打印到println!
。相反,您只想格式化字符串并从宏返回它。请改用stdout
,然后放下format!
,以便它返回表达式,而不是;
:
()