но в чём проблема у меня?
rust
macro_rules! chain_references {
($value:expr, $depth:expr) => {
{
let mut reference = &$value;
for _ in 0..$depth {
reference = &reference;
}
reference
}
};
}
fn main(){
let a=chain_references!(418, 1000);
println!("{:?}", a);
}
Что данный код должен делать?
должен создать указатель на указатель на указатель 1000 раз на число 418
А где проблему вы видите?
принтлн выводит 418, а не &&&&&&&&&&&&&&&&&&&&...418
let a = &&&5; println!("{}", a); что по вашему должен вывести этот код?
выводит 5. но даже с форматером {:?}
потому что происходит автоматический дереференс. ссылки как таковые просто не умеют печататься
https://docs.rs/seq-macro/latest/seq_macro/ let r = &value; seq!(N in 0..1000 { let r = &r; }) *r
а для чего вообще такое издевательство нужно? или это просто ради эксперимента?
Обсуждают сегодня