25 lines
680 B
Rust
25 lines
680 B
Rust
// When we notice something breaks only without validation, we add a test here.
|
|
// compile-flags: -Zmiri-disable-validation
|
|
use std::cell::*;
|
|
|
|
fn refcell_unsize() {
|
|
let cell: RefCell<[i32; 3]> = RefCell::new([1, 2, 3]);
|
|
{
|
|
let mut cellref: RefMut<'_, [i32; 3]> = cell.borrow_mut();
|
|
cellref[0] = 4;
|
|
let mut coerced: RefMut<'_, [i32]> = cellref;
|
|
coerced[2] = 5;
|
|
}
|
|
{
|
|
let comp: &mut [i32] = &mut [4, 2, 5];
|
|
let cellref: Ref<'_, [i32; 3]> = cell.borrow();
|
|
assert_eq!(&*cellref, comp);
|
|
let coerced: Ref<'_, [i32]> = cellref;
|
|
assert_eq!(&*coerced, comp);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
refcell_unsize();
|
|
}
|