Actually, I think I have already figured out that the answer is no, the source code for CStr has the following comment.
// FIXME: this should not be represented with a DST slice but rather with
// just a raw `c_char` along with some form of marker to make
// this an unsized type. Essentially `sizeof(&CStr)` should be the
// same as `sizeof(&c_char)` but `CStr` should be an unsized type.
If I understand correctly, this means that &CStr is currently a wide pointer, so the cast I was suggesting will not work. Is that right? If this FIXME is implemented, would it make my cast OK?
No, it is not – CStr is a DST similar to a str, and so is a regular slice. It's already wrong to pass a reference to a slice where a pointer to an element is expected.
OK, got it, thank you. I just thought that CStr might have some special exemption here and the comment that I cited suggests that maybe something like that is planned.