]> git.lizzy.rs Git - rust.git/blob - src/test/ui/array-slice-vec/vec_cycle.rs
82bce437282628cf7f41ad34b870006fd94c9e5d
[rust.git] / src / test / ui / array-slice-vec / vec_cycle.rs
1 // run-pass
2
3 use std::cell::Cell;
4
5 #[derive(Debug)]
6 struct C<'a> {
7     v: Vec<Cell<Option<&'a C<'a>>>>,
8 }
9
10 impl<'a> C<'a> {
11     fn new() -> C<'a> {
12         C { v: Vec::new() }
13     }
14 }
15
16 fn f() {
17     let (mut c1, mut c2, mut c3);
18     c1 = C::new();
19     c2 = C::new();
20     c3 = C::new();
21
22     c1.v.push(Cell::new(None));
23     c1.v.push(Cell::new(None));
24     c2.v.push(Cell::new(None));
25     c2.v.push(Cell::new(None));
26     c3.v.push(Cell::new(None));
27     c3.v.push(Cell::new(None));
28
29     c1.v[0].set(Some(&c2));
30     c1.v[1].set(Some(&c3));
31     c2.v[0].set(Some(&c2));
32     c2.v[1].set(Some(&c3));
33     c3.v[0].set(Some(&c1));
34     c3.v[1].set(Some(&c2));
35 }
36
37 fn main() {
38     f();
39 }