From 835561ac5b3529a827c76dc4e7cea15f38047b5a Mon Sep 17 00:00:00 2001 From: Christiaan Dirkx Date: Sun, 20 Jun 2021 11:55:26 +0200 Subject: [PATCH] Make `os_str_bytes::{Buf, Slice}` `pub` and `repr(transparent)` --- library/std/src/sys_common/os_str_bytes.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/library/std/src/sys_common/os_str_bytes.rs b/library/std/src/sys_common/os_str_bytes.rs index 0420428860b0b..470f401a6d254 100644 --- a/library/std/src/sys_common/os_str_bytes.rs +++ b/library/std/src/sys_common/os_str_bytes.rs @@ -14,17 +14,13 @@ use crate::sys_common::{AsInner, IntoInner}; use core::str::lossy::Utf8Lossy; #[derive(Hash)] -pub(crate) struct Buf { +#[repr(transparent)] +pub struct Buf { pub inner: Vec, } -// FIXME: -// `Buf::as_slice` current implementation relies -// on `Slice` being layout-compatible with `[u8]`. -// When attribute privacy is implemented, `Slice` should be annotated as `#[repr(transparent)]`. -// Anyway, `Slice` representation and layout are considered implementation detail, are -// not documented and must not be relied upon. -pub(crate) struct Slice { +#[repr(transparent)] +pub struct Slice { pub inner: [u8], }