| // run-pass | |
| struct List<T> { | |
| value: T, | |
| next: Option<Box<List<T>>>, | |
| } | |
| fn to_refs<T>(mut list: &mut List<T>) -> Vec<&mut T> { | |
| let mut result = vec![]; | |
| loop { | |
| result.push(&mut list.value); | |
| if let Some(n) = list.next.as_mut() { | |
| list = n; | |
| } else { | |
| return result; | |
| } | |
| } | |
| } | |
| fn main() { | |
| let mut list = List { value: 1, next: None }; | |
| let vec = to_refs(&mut list); | |
| assert_eq!(vec![&mut 1], vec); | |
| } |