Move vec-cycle test
This commit is contained in:
parent
275eed7eb1
commit
6bc0357dad
|
@ -1,4 +1,5 @@
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
use std::cell::Cell;
|
||||||
use std::collections::TryReserveError::*;
|
use std::collections::TryReserveError::*;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::iter::InPlaceIterable;
|
use std::iter::InPlaceIterable;
|
||||||
|
@ -1831,3 +1832,41 @@ fn partialeq_vec_full() {
|
||||||
assert_partial_eq_valid!(vec2,vec3; array2,array3);
|
assert_partial_eq_valid!(vec2,vec3; array2,array3);
|
||||||
assert_partial_eq_valid!(vec2,vec3; arrayref2,arrayref3);
|
assert_partial_eq_valid!(vec2,vec3; arrayref2,arrayref3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_vec_cycle() {
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct C<'a> {
|
||||||
|
v: Vec<Cell<Option<&'a C<'a>>>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> C<'a> {
|
||||||
|
fn new() -> C<'a> {
|
||||||
|
C { v: Vec::new() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut c1 = C::new();
|
||||||
|
let mut c2 = C::new();
|
||||||
|
let mut c3 = C::new();
|
||||||
|
|
||||||
|
// Push
|
||||||
|
c1.v.push(Cell::new(None));
|
||||||
|
c1.v.push(Cell::new(None));
|
||||||
|
|
||||||
|
c2.v.push(Cell::new(None));
|
||||||
|
c2.v.push(Cell::new(None));
|
||||||
|
|
||||||
|
c3.v.push(Cell::new(None));
|
||||||
|
c3.v.push(Cell::new(None));
|
||||||
|
|
||||||
|
// Set
|
||||||
|
c1.v[0].set(Some(&c2));
|
||||||
|
c1.v[1].set(Some(&c3));
|
||||||
|
|
||||||
|
c2.v[0].set(Some(&c2));
|
||||||
|
c2.v[1].set(Some(&c3));
|
||||||
|
|
||||||
|
c3.v[0].set(Some(&c1));
|
||||||
|
c3.v[1].set(Some(&c2));
|
||||||
|
}
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
// run-pass
|
|
||||||
|
|
||||||
use std::cell::Cell;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
struct C<'a> {
|
|
||||||
v: Vec<Cell<Option<&'a C<'a>>>>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> C<'a> {
|
|
||||||
fn new() -> C<'a> {
|
|
||||||
C { v: Vec::new() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn f() {
|
|
||||||
let (mut c1, mut c2, mut c3);
|
|
||||||
c1 = C::new();
|
|
||||||
c2 = C::new();
|
|
||||||
c3 = C::new();
|
|
||||||
|
|
||||||
c1.v.push(Cell::new(None));
|
|
||||||
c1.v.push(Cell::new(None));
|
|
||||||
c2.v.push(Cell::new(None));
|
|
||||||
c2.v.push(Cell::new(None));
|
|
||||||
c3.v.push(Cell::new(None));
|
|
||||||
c3.v.push(Cell::new(None));
|
|
||||||
|
|
||||||
c1.v[0].set(Some(&c2));
|
|
||||||
c1.v[1].set(Some(&c3));
|
|
||||||
c2.v[0].set(Some(&c2));
|
|
||||||
c2.v[1].set(Some(&c3));
|
|
||||||
c3.v[0].set(Some(&c1));
|
|
||||||
c3.v[1].set(Some(&c2));
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
f();
|
|
||||||
}
|
|
Loading…
Reference in New Issue