diff --git a/library/std/src/os/aix/fs.rs b/library/std/src/os/aix/fs.rs index ac9dd45f05426..f0151ff82cef8 100644 --- a/library/std/src/os/aix/fs.rs +++ b/library/std/src/os/aix/fs.rs @@ -5,13 +5,14 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; /// OS-specific extensions to [`fs::Metadata`]. /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Returns the device ID on which this file resides. /// /// # Examples @@ -294,6 +295,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/android/fs.rs b/library/std/src/os/android/fs.rs index 1beb3cf6e84b5..baa8017dffd85 100644 --- a/library/std/src/os/android/fs.rs +++ b/library/std/src/os/android/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::android::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -59,6 +60,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/dragonfly/fs.rs b/library/std/src/os/dragonfly/fs.rs index 1424fc4c69880..09139ded92a83 100644 --- a/library/std/src/os/dragonfly/fs.rs +++ b/library/std/src/os/dragonfly/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::dragonfly::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -65,6 +66,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_lspare(&self) -> u32; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/emscripten/fs.rs b/library/std/src/os/emscripten/fs.rs index d5ec8e03c00d1..4aa677d06e0ad 100644 --- a/library/std/src/os/emscripten/fs.rs +++ b/library/std/src/os/emscripten/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::emscripten::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -59,6 +60,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/espidf/fs.rs b/library/std/src/os/espidf/fs.rs index 88701dafe20ce..74140d79c5b34 100644 --- a/library/std/src/os/espidf/fs.rs +++ b/library/std/src/os/espidf/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::espidf::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { #[stable(feature = "metadata_ext", since = "1.1.0")] #[deprecated( since = "1.8.0", @@ -55,6 +56,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_spare4(&self) -> [u32; 2]; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/freebsd/fs.rs b/library/std/src/os/freebsd/fs.rs index 5689a82e00a34..4f225ff0a68b9 100644 --- a/library/std/src/os/freebsd/fs.rs +++ b/library/std/src/os/freebsd/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::freebsd::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -69,6 +70,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_lspare(&self) -> u32; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/fuchsia/fs.rs b/library/std/src/os/fuchsia/fs.rs index b48a46f9124a9..a8c90681f7839 100644 --- a/library/std/src/os/fuchsia/fs.rs +++ b/library/std/src/os/fuchsia/fs.rs @@ -1,13 +1,14 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; /// OS-specific extensions to [`fs::Metadata`]. /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_dev(&self) -> u64; #[stable(feature = "metadata_ext2", since = "1.8.0")] @@ -41,6 +42,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/haiku/fs.rs b/library/std/src/os/haiku/fs.rs index a23a2af8f6e7b..1296ddbb71c99 100644 --- a/library/std/src/os/haiku/fs.rs +++ b/library/std/src/os/haiku/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::haiku::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -63,6 +64,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/horizon/fs.rs b/library/std/src/os/horizon/fs.rs index 1325522105dc8..eb6368305b574 100644 --- a/library/std/src/os/horizon/fs.rs +++ b/library/std/src/os/horizon/fs.rs @@ -1,13 +1,14 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; /// OS-specific extensions to [`fs::Metadata`]. /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_dev(&self) -> u64; #[stable(feature = "metadata_ext2", since = "1.8.0")] @@ -41,6 +42,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/hurd/fs.rs b/library/std/src/os/hurd/fs.rs index 00ff1560f31d9..946860dd0651b 100644 --- a/library/std/src/os/hurd/fs.rs +++ b/library/std/src/os/hurd/fs.rs @@ -5,13 +5,14 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; /// OS-specific extensions to [`fs::Metadata`]. /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Returns the device ID on which this file resides. /// /// # Examples @@ -294,6 +295,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/illumos/fs.rs b/library/std/src/os/illumos/fs.rs index 63be48b8131b2..4a50cbcc00b76 100644 --- a/library/std/src/os/illumos/fs.rs +++ b/library/std/src/os/illumos/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::illumos::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -58,6 +59,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/ios/fs.rs b/library/std/src/os/ios/fs.rs index e5df4de0b7f71..4f98735ceab80 100644 --- a/library/std/src/os/ios/fs.rs +++ b/library/std/src/os/ios/fs.rs @@ -12,7 +12,7 @@ use super::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -71,6 +71,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_lspare(&self) -> u32; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/l4re/fs.rs b/library/std/src/os/l4re/fs.rs index 6d6a535b1e831..15f4caaad8f42 100644 --- a/library/std/src/os/l4re/fs.rs +++ b/library/std/src/os/l4re/fs.rs @@ -5,6 +5,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -14,7 +15,7 @@ use crate::os::l4re::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -324,6 +325,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/linux/fs.rs b/library/std/src/os/linux/fs.rs index ab0b2a3eda3f5..de21419d3ff57 100644 --- a/library/std/src/os/linux/fs.rs +++ b/library/std/src/os/linux/fs.rs @@ -5,6 +5,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -14,7 +15,7 @@ use crate::os::linux::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -324,6 +325,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/macos/fs.rs b/library/std/src/os/macos/fs.rs index 573426d1a8646..d34415d85a7dc 100644 --- a/library/std/src/os/macos/fs.rs +++ b/library/std/src/os/macos/fs.rs @@ -12,7 +12,7 @@ use crate::os::macos::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -73,6 +73,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_qspare(&self) -> [u64; 2]; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/netbsd/fs.rs b/library/std/src/os/netbsd/fs.rs index fe0be069e5e3f..5c7e9500fa290 100644 --- a/library/std/src/os/netbsd/fs.rs +++ b/library/std/src/os/netbsd/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::netbsd::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -67,6 +68,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_gen(&self) -> u32; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/nto/fs.rs b/library/std/src/os/nto/fs.rs index 8f915b08c9e2e..3028c31d65941 100644 --- a/library/std/src/os/nto/fs.rs +++ b/library/std/src/os/nto/fs.rs @@ -1,10 +1,11 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_dev(&self) -> u64; #[stable(feature = "metadata_ext2", since = "1.8.0")] @@ -38,6 +39,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/openbsd/fs.rs b/library/std/src/os/openbsd/fs.rs index b8d8d31c5b8cf..6f51b6f6c9f6c 100644 --- a/library/std/src/os/openbsd/fs.rs +++ b/library/std/src/os/openbsd/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -67,6 +68,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_gen(&self) -> u32; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/redox/fs.rs b/library/std/src/os/redox/fs.rs index 682ca6a2c0309..895c00f46c5f3 100644 --- a/library/std/src/os/redox/fs.rs +++ b/library/std/src/os/redox/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::redox::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -324,6 +325,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/solaris/fs.rs b/library/std/src/os/solaris/fs.rs index 0931437370429..4cb9d3022f337 100644 --- a/library/std/src/os/solaris/fs.rs +++ b/library/std/src/os/solaris/fs.rs @@ -1,6 +1,7 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; #[allow(deprecated)] @@ -10,7 +11,7 @@ use crate::os::solaris::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -59,6 +60,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/unix/fs.rs b/library/std/src/os/unix/fs.rs index 0eb4e88cfad96..44b41a43c8209 100644 --- a/library/std/src/os/unix/fs.rs +++ b/library/std/src/os/unix/fs.rs @@ -429,7 +429,7 @@ impl OpenOptionsExt for OpenOptions { /// Unix-specific extensions to [`fs::Metadata`]. #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Returns the ID of the device containing the file. /// /// # Examples @@ -718,6 +718,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext", since = "1.1.0")] fn attrib(&self) -> u8; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for fs::Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for fs::Metadata { diff --git a/library/std/src/os/vita/fs.rs b/library/std/src/os/vita/fs.rs index a5a06764a4dd8..2de92ae3f4737 100644 --- a/library/std/src/os/vita/fs.rs +++ b/library/std/src/os/vita/fs.rs @@ -1,13 +1,14 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; /// OS-specific extensions to [`fs::Metadata`]. /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_dev(&self) -> u64; #[stable(feature = "metadata_ext2", since = "1.8.0")] @@ -41,6 +42,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_blocks(&self) -> u64; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/vxworks/fs.rs b/library/std/src/os/vxworks/fs.rs index 77e6238ca1f52..a416b2bc6400f 100644 --- a/library/std/src/os/vxworks/fs.rs +++ b/library/std/src/os/vxworks/fs.rs @@ -1,12 +1,12 @@ #![stable(feature = "metadata_ext", since = "1.1.0")] use crate::fs::Metadata; +use crate::sealed::Sealed; use crate::sys_common::AsInner; - /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_dev(&self) -> u64; #[stable(feature = "metadata_ext2", since = "1.8.0")] @@ -42,6 +42,7 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_attrib(&self) -> u8; } +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/wasi/fs.rs b/library/std/src/os/wasi/fs.rs index 3da8c835511ac..e63cb6e08f7f5 100644 --- a/library/std/src/os/wasi/fs.rs +++ b/library/std/src/os/wasi/fs.rs @@ -9,6 +9,7 @@ use crate::ffi::OsStr; use crate::fs::{self, File, Metadata, OpenOptions}; use crate::io::{self, IoSlice, IoSliceMut}; use crate::path::{Path, PathBuf}; +use crate::sealed::Sealed; use crate::sys_common::{AsInner, AsInnerMut, FromInner}; // Used for `File::read` on intra-doc links #[allow(unused_imports)] @@ -410,7 +411,7 @@ impl OpenOptionsExt for OpenOptions { } /// WASI-specific extensions to [`fs::Metadata`]. -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Returns the `st_dev` field of the internal `filestat_t` fn dev(&self) -> u64; /// Returns the `st_ino` field of the internal `filestat_t` @@ -426,6 +427,7 @@ pub trait MetadataExt { /// Returns the `st_ctim` field of the internal `filestat_t` fn ctim(&self) -> u64; } +impl Sealed for Metadata {} impl MetadataExt for fs::Metadata { fn dev(&self) -> u64 { diff --git a/library/std/src/os/watchos/fs.rs b/library/std/src/os/watchos/fs.rs index ee215dd598441..6fb3111fba6c9 100644 --- a/library/std/src/os/watchos/fs.rs +++ b/library/std/src/os/watchos/fs.rs @@ -12,7 +12,7 @@ use crate::os::watchos::raw; /// /// [`fs::Metadata`]: crate::fs::Metadata #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Gain a reference to the underlying `stat` structure which contains /// the raw information returned by the OS. /// @@ -71,6 +71,8 @@ pub trait MetadataExt { #[stable(feature = "metadata_ext2", since = "1.8.0")] fn st_lspare(&self) -> u32; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata { diff --git a/library/std/src/os/windows/fs.rs b/library/std/src/os/windows/fs.rs index 1b013d1c154c9..15d396773d0bb 100644 --- a/library/std/src/os/windows/fs.rs +++ b/library/std/src/os/windows/fs.rs @@ -301,7 +301,7 @@ impl OpenOptionsExt for OpenOptions { /// [`BY_HANDLE_FILE_INFORMATION`]: /// https://docs.microsoft.com/en-us/windows/win32/api/fileapi/ns-fileapi-by_handle_file_information #[stable(feature = "metadata_ext", since = "1.1.0")] -pub trait MetadataExt { +pub trait MetadataExt: Sealed { /// Returns the value of the `dwFileAttributes` field of this metadata. /// /// This field contains the file system attribute information for a file @@ -472,6 +472,8 @@ pub trait MetadataExt { #[unstable(feature = "windows_by_handle", issue = "63010")] fn file_index(&self) -> Option; } +#[stable(feature = "metadata_ext", since = "1.1.0")] +impl Sealed for Metadata {} #[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for Metadata {