Rust Vec with interior mutability which allows to take disjoint mutable references to its elements.
```rust use vec_cell::VecCell;
// Create VecCell
.
let vec_cell: VecCell
// Push elements to VecCell
.
veccell.push(0);
veccell.push(1);
vec_cell.push(2);
// Take immutable borrows to VecCell
elements.
{
asserteq!(*veccell.borrow(0), 0);
asserteq!(*veccell.borrow(1), 1);
asserteq!(*veccell.borrow(2), 2);
}
// Take disjoint mutable borrows to VecCell
elements.
{
let borrowmut1 = &mut *veccell.borrowmut(1);
let borrowmut2 = &mut *veccell.borrowmut(2);
*borrow_mut1 = 10;
*borrow_mut2 = 15;
}
// Pop elements from VecCell
.
asserteq!(veccell.pop(), 15);
asserteq!(veccell.pop(), 10);
asserteq!(veccell.pop(), 0);
```