Implement Deref<Target=ByteStr> for CStr by tamird · Pull Request #138498 · rust-lang/rust (original) (raw)
This is a really interesting idea. One potential point of concern: the deref to ByteStr
uses to_bytes
(rather than to_bytes_with_nul
), which somewhat makes sense, but with the further deref to &[u8]
, is there any chance that someone will end up with a &[u8]
that lacks the NUL when they expected a &[u8]
that has the NUL
?
This is probably fine, and I would hope that any FFI cases that require the NUL use CStr
(or to_bytes_with_nul
). However, I wanted to call it out as a potential hazard. If we do this, I think this deserves a mention in the documentation at least.