diff options
| author | Alexis Bourget <alexis.bourget@gmail.com> | 2020-09-10 15:27:48 +0200 |
|---|---|---|
| committer | Alexis Bourget <alexis.bourget@gmail.com> | 2020-09-21 21:50:26 +0200 |
| commit | 8904921c1d6b3636f4352f9dd6d4875132b89998 (patch) | |
| tree | d12ce9e92bc433a13ad3ae012be9da4d9ca11082 /library/core/tests | |
| parent | ac39debeba2b63a39a3833e2d7451f0b1f95b5f2 (diff) | |
| download | rust-8904921c1d6b3636f4352f9dd6d4875132b89998.tar.gz rust-8904921c1d6b3636f4352f9dd6d4875132b89998.zip | |
Move array cycle test
Diffstat (limited to 'library/core/tests')
| -rw-r--r-- | library/core/tests/array.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/library/core/tests/array.rs b/library/core/tests/array.rs index 5aba1a5d958..da496ad7bcd 100644 --- a/library/core/tests/array.rs +++ b/library/core/tests/array.rs @@ -330,3 +330,32 @@ fn array_map_drop_safety() { assert_eq!(DROPPED.load(Ordering::SeqCst), num_to_create); panic!("test succeeded") } + +#[test] +fn cell_allows_array_cycle() { + use core::cell::Cell; + + #[derive(Debug)] + struct B<'a> { + a: [Cell<Option<&'a B<'a>>>; 2], + } + + impl<'a> B<'a> { + fn new() -> B<'a> { + B { a: [Cell::new(None), Cell::new(None)] } + } + } + + let b1 = B::new(); + let b2 = B::new(); + let b3 = B::new(); + + b1.a[0].set(Some(&b2)); + b1.a[1].set(Some(&b3)); + + b2.a[0].set(Some(&b2)); + b2.a[1].set(Some(&b3)); + + b3.a[0].set(Some(&b1)); + b3.a[1].set(Some(&b2)); +} |
