How can I avoid "value assigned to last is never read" warning from this macro?
How can I avoid "value assigned to last is never read" warning from this macro?
Removing last will break my library.
Rust
#[macro_export] macro_rules! list { () => { None }; [ $x:expr, $( $y:expr ),* ] => { { let mut first = cons($x, &None); let mut last = &mut first; $( let yet_another = cons($y, &None); if let Some(ref mut last_inner) = last { let last_mut = Rc::get_mut(last_inner).unwrap(); last_mut.cdr = yet_another; last = &mut last_mut.cdr; } )* first } } }
This macro works as I expected because it can pass these tests.
Rust
#[test] fn dolist() { let mut v = vec![]; dolist!((i &cons(10, &list![20, 30, 40])) { v.push(i.car); }); assert_eq!(v, vec![10, 20, 30, 40]); } #[test] fn turn_list_to_vec() { assert_eq!(list_to_vec(&list![1, 2, 3]), vec![1, 2, 3]); } #[test] fn count_elements() { assert_eq!(list_len(&list![10, 20, 30]), 3); }
However I got the warning "value assigned to last is never read."
How can I avoid this warning?
P.S. Full code