From 57d8289754767e046a01abaab6054b7146c51f74 Mon Sep 17 00:00:00 2001 From: P1start Date: Thu, 23 Apr 2015 22:53:54 +1200 Subject: Make `UnsafeCell`, `RefCell`, `Mutex`, and `RwLock` accept DSTs This + DST coercions (#24619) would allow code like `Rc>>` to be simplified to `Rc>`. --- src/libcoretest/cell.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/libcoretest') diff --git a/src/libcoretest/cell.rs b/src/libcoretest/cell.rs index 85dd1039003..0bd0b66318f 100644 --- a/src/libcoretest/cell.rs +++ b/src/libcoretest/cell.rs @@ -159,3 +159,27 @@ fn refcell_default() { let cell: RefCell = Default::default(); assert_eq!(0, *cell.borrow()); } + +#[test] +fn unsafe_cell_unsized() { + let cell: &UnsafeCell<[i32]> = &UnsafeCell::new([1, 2, 3]); + { + let val: &mut [i32] = unsafe { &mut *cell.get() }; + val[0] = 4; + val[2] = 5; + } + let comp: &mut [i32] = &mut [4, 2, 5]; + assert_eq!(unsafe { &mut *cell.get() }, comp); +} + +#[test] +fn refcell_unsized() { + let cell: &RefCell<[i32]> = &RefCell::new([1, 2, 3]); + { + let b = &mut *cell.borrow_mut(); + b[0] = 4; + b[2] = 5; + } + let comp: &mut [i32] = &mut [4, 2, 5]; + assert_eq!(&*cell.borrow(), comp); +} -- cgit 1.4.1-3-g733a5