Allow comparisons between CStr, CString, and Cow<CStr>. by bjoernager · Pull Request #137268 · rust-lang/rust (original) (raw)

Closes: #137265

This PR adds the trait implementations proposed in the ACP under the c_string_eq_c_str feature gate:

// core::ffi

impl PartialEq<&Self> for CStr;

impl PartialEq for CStr;

impl PartialEq<Cow<'_, Self>> for CStr;

// alloc::ffi

impl PartialEq for CString;

impl PartialEq<&CStr> for CString;

impl PartialEq<Cow<'_, CStr>> for CString;

// alloc::borrow

impl PartialEq for Cow<'_, CStr>;

impl PartialEq<&CStr> for Cow<'_, CStr>;

impl PartialEq for Cow<'_, CStr>;

As I understand it, stable traits cannot be unstably implemented for stable types, and we would thereby be forced to skip the FCP and directly stabilise these implementations (as is done in this PR).

(@joshtriplett mentioned that Crater may have to be run).