Simultaneous mutable access to arbitrary indices of a large vector that are guaranteed to be disjoint

When the compiler can’t enforce that mutable references to a slice elements aren’t exclusive, Cell is pretty nice. You can transform a &mut [T] into a &Cell<[T]> using Cell::from_mut, and then a &Cell<[T]> into a &[Cell<T>] using Cell::as_slice_of_cells. All of this is zero-cost: It’s just there to guide the type-system. A &[Cell<T>] is like a … Read more