actually this doesn't even affect doctests. nice.
This commit is contained in:
parent
f887f5a9c6
commit
fe1a034f16
@ -82,14 +82,11 @@ use crate::str;
|
||||
#[stable(feature = "core_c_str", since = "1.64.0")]
|
||||
#[rustc_has_incoherent_inherent_impls]
|
||||
#[lang = "CStr"]
|
||||
// FIXME:
|
||||
// `fn from` in `impl From<&CStr> for Box<CStr>` current implementation relies
|
||||
// on `CStr` being layout-compatible with `[u8]`.
|
||||
// When attribute privacy is implemented, `CStr` should be annotated as `#[repr(transparent)]`.
|
||||
// Anyway, `CStr` representation and layout are considered implementation detail, are
|
||||
// not documented and must not be relied upon.
|
||||
// For now we just hide this from rustdoc, technically making our doc test builds rely on
|
||||
// unspecified layout assumptions. We are std, so we can get away with that.
|
||||
// However, `CStr` layout is considered an implementation detail and must not be relied upon. We
|
||||
// want `repr(transparent)` but we don't want it to show up in rustdoc, so we hide it under
|
||||
// `cfg(doc)`. This is an ad-hoc implementation of attribute privacy.
|
||||
#[cfg_attr(not(doc), repr(transparent))]
|
||||
pub struct CStr {
|
||||
// FIXME: this should not be represented with a DST slice but rather with
|
||||
|
@ -110,14 +110,11 @@ impl crate::sealed::Sealed for OsString {}
|
||||
/// [conversions]: super#conversions
|
||||
#[cfg_attr(not(test), rustc_diagnostic_item = "OsStr")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
// FIXME:
|
||||
// `OsStr::from_inner` current implementation relies
|
||||
// on `OsStr` being layout-compatible with `Slice`.
|
||||
// When attribute privacy is implemented, `OsStr` should be annotated as `#[repr(transparent)]`.
|
||||
// Anyway, `OsStr` representation and layout are considered implementation details, are
|
||||
// not documented and must not be relied upon.
|
||||
// For now we just hide this from rustdoc, technically making our doc test builds rely on
|
||||
// unspecified layout assumptions. We are std, so we can get away with that.
|
||||
// However, `OsStr` layout is considered an implementation detail and must not be relied upon. We
|
||||
// want `repr(transparent)` but we don't want it to show up in rustdoc, so we hide it under
|
||||
// `cfg(doc)`. This is an ad-hoc implementation of attribute privacy.
|
||||
#[cfg_attr(not(doc), repr(transparent))]
|
||||
pub struct OsStr {
|
||||
inner: Slice,
|
||||
|
@ -1158,14 +1158,11 @@ impl FusedIterator for Ancestors<'_> {}
|
||||
/// Which method works best depends on what kind of situation you're in.
|
||||
#[cfg_attr(not(test), rustc_diagnostic_item = "PathBuf")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
// FIXME:
|
||||
// `PathBuf::as_mut_vec` current implementation relies
|
||||
// on `PathBuf` being layout-compatible with `Vec<u8>`.
|
||||
// When attribute privacy is implemented, `PathBuf` should be annotated as `#[repr(transparent)]`.
|
||||
// Anyway, `PathBuf` representation and layout are considered implementation detail, are
|
||||
// not documented and must not be relied upon.
|
||||
// For now we just hide this from rustdoc, technically making our doc test builds rely on
|
||||
// unspecified layout assumptions. We are std, so we can get away with that.
|
||||
// However, `PathBuf` layout is considered an implementation detail and must not be relied upon. We
|
||||
// want `repr(transparent)` but we don't want it to show up in rustdoc, so we hide it under
|
||||
// `cfg(doc)`. This is an ad-hoc implementation of attribute privacy.
|
||||
#[cfg_attr(not(doc), repr(transparent))]
|
||||
pub struct PathBuf {
|
||||
inner: OsString,
|
||||
@ -1986,14 +1983,11 @@ impl AsRef<OsStr> for PathBuf {
|
||||
/// ```
|
||||
#[cfg_attr(not(test), rustc_diagnostic_item = "Path")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
// FIXME:
|
||||
// `Path::new` current implementation relies
|
||||
// on `Path` being layout-compatible with `OsStr`.
|
||||
// When attribute privacy is implemented, `Path` should be annotated as `#[repr(transparent)]`.
|
||||
// Anyway, `Path` representation and layout are considered implementation detail, are
|
||||
// not documented and must not be relied upon.
|
||||
// For now we just hide this from rustdoc, technically making our doc test builds rely on
|
||||
// unspecified layout assumptions. We are std, so we can get away with that.
|
||||
// However, `Path` layout is considered an implementation detail and must not be relied upon. We
|
||||
// want `repr(transparent)` but we don't want it to show up in rustdoc, so we hide it under
|
||||
// `cfg(doc)`. This is an ad-hoc implementation of attribute privacy.
|
||||
#[cfg_attr(not(doc), repr(transparent))]
|
||||
pub struct Path {
|
||||
inner: OsStr,
|
||||
|
Loading…
x
Reference in New Issue
Block a user