In the current API, CString::new takes a *const i8, but it has a method as_mut_ptr which returns a *mut i8.
The as_mut_ptr method seems to violate the invariant that the new method is trying to impose.
Perhaps we need CString and MutCString, as well as MutCString::to_c_string?