For example, the signature of execve is:
pub fn execve(path: &CString, args: &[CString], env: &[CString]) -> Result<Void>
Surely there's no point in taking a &CString as opposed to a &CStr, right? And couldn't the slices just contain &CStrs since it's not possible to move out of a slice anyway?