} else {
// Otherwise, we can convert the next pointer to a borrow, get a borrow to the data
// and update the iterator.
let next = unsafe { &mut *self.next };
let ret = &mut next.data;
} else {
// Otherwise, we can convert the next pointer to a borrow, get a borrow to the data
// and update the iterator.
let next = unsafe { &mut *self.next };
let ret = &mut next.data;