> You can see how this makes it impossible to mutate the state without remembering to aquire the lock.
Not quite true. Looking at the type signature of e.g. RWArc::write I see this:
fn write<U>(&self, blk: |x: &mut T| -> U) -> U
which means I could probably do: let mut n = local_arc.write(|nums| {
nums[num] += 1;
return ~(*nums);
});
n[2] = 42;