]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/nll/mutating_references.rs
0af8751494e0d376144eba3d48e89fdb1729eefd
[rust.git] / src / test / run-pass / nll / mutating_references.rs
1 // run-pass
2
3 #![feature(nll)]
4
5 struct List<T> {
6     value: T,
7     next: Option<Box<List<T>>>,
8 }
9
10 fn to_refs<T>(mut list: &mut List<T>) -> Vec<&mut T> {
11     let mut result = vec![];
12     loop {
13         result.push(&mut list.value);
14         if let Some(n) = list.next.as_mut() {
15             list = n;
16         } else {
17             return result;
18         }
19     }
20 }
21
22 fn main() {
23     let mut list = List { value: 1, next: None };
24     let vec = to_refs(&mut list);
25     assert_eq!(vec![&mut 1], vec);
26 }