Я хочу создать макрос, который будет принимать в качестве параметров ($var:ident, $val:expr)
. Макрос должен установить для переменной $var
значение $val
, клонировать ее и вернуть клон. Это моя попытка:
macro_rules! my_macro {
($var:ident, $val:expr) => {{
let $var = $val;
$var.clone()
}}
}
fn main() {
println!("{}", my_macro!(x, 5));
println!("{}", x);
}
Это не работает, потому что оператор let
находится внутри блока. Если я попытаюсь решить проблему, изменив {{
на {
, произойдет синтаксическая ошибка. Есть ли способ решить эту проблему?