From a0572b315879c3d7ce0b0f1545832971163b2d7b Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Wed, 13 Dec 2023 15:53:30 +0000 Subject: [PATCH] Seal `MetadataExt` --- library/std/src/fs.rs | 4 ++++ library/std/src/os/aix/fs.rs | 3 ++- library/std/src/os/android/fs.rs | 3 ++- library/std/src/os/dragonfly/fs.rs | 3 ++- library/std/src/os/emscripten/fs.rs | 3 ++- library/std/src/os/espidf/fs.rs | 3 ++- library/std/src/os/freebsd/fs.rs | 3 ++- library/std/src/os/fuchsia/fs.rs | 3 ++- library/std/src/os/haiku/fs.rs | 3 ++- library/std/src/os/horizon/fs.rs | 3 ++- library/std/src/os/hurd/fs.rs | 3 ++- library/std/src/os/illumos/fs.rs | 3 ++- library/std/src/os/ios/fs.rs | 2 +- library/std/src/os/l4re/fs.rs | 3 ++- library/std/src/os/linux/fs.rs | 3 ++- library/std/src/os/macos/fs.rs | 2 +- library/std/src/os/netbsd/fs.rs | 3 ++- library/std/src/os/nto/fs.rs | 3 ++- library/std/src/os/openbsd/fs.rs | 3 ++- library/std/src/os/redox/fs.rs | 3 ++- library/std/src/os/solaris/fs.rs | 3 ++- library/std/src/os/unix/fs.rs | 2 +- library/std/src/os/vita/fs.rs | 3 ++- library/std/src/os/vxworks/fs.rs | 4 ++-- library/std/src/os/wasi/fs.rs | 3 ++- library/std/src/os/watchos/fs.rs | 2 +- library/std/src/os/windows/fs.rs | 2 +- 27 files changed, 51 insertions(+), 27 deletions(-) diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index 4310e1083038..71bc17d0f94f 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -111,6 +111,10 @@ pub struct File { #[derive(Clone)] pub struct Metadata(fs_imp::FileAttr); +/// Allows extension traits within `std`. +#[unstable(feature = "sealed", issue = "none")] +impl crate::sealed::Sealed for Metadata {} + /// Iterator over the entries in a directory. /// /// This iterator is returned from the [`read_dir`] function of this module and diff --git a/library/std/src/os/aix/fs.rs b/library/std/src/os/aix/fs.rs index ac9dd45f0542..bb062f4394bf 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 diff --git a/library/std/src/os/android/fs.rs b/library/std/src/os/android/fs.rs index 1beb3cf6e84b..abd70775cbc9 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. /// diff --git a/library/std/src/os/dragonfly/fs.rs b/library/std/src/os/dragonfly/fs.rs index 1424fc4c6988..c50d2b8e5507 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. /// diff --git a/library/std/src/os/emscripten/fs.rs b/library/std/src/os/emscripten/fs.rs index d5ec8e03c00d..ae4aa5c16a8b 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. /// diff --git a/library/std/src/os/espidf/fs.rs b/library/std/src/os/espidf/fs.rs index 88701dafe20c..3d804a6fd465 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", diff --git a/library/std/src/os/freebsd/fs.rs b/library/std/src/os/freebsd/fs.rs index 5689a82e00a3..124a083a3f81 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. /// diff --git a/library/std/src/os/fuchsia/fs.rs b/library/std/src/os/fuchsia/fs.rs index b48a46f9124a..a2da22f6cec3 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")] diff --git a/library/std/src/os/haiku/fs.rs b/library/std/src/os/haiku/fs.rs index a23a2af8f6e7..0f5409d210f4 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. /// diff --git a/library/std/src/os/horizon/fs.rs b/library/std/src/os/horizon/fs.rs index 1325522105dc..6dcbe6a3de4c 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")] diff --git a/library/std/src/os/hurd/fs.rs b/library/std/src/os/hurd/fs.rs index 00ff1560f31d..f8a5b5fdf5e3 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 diff --git a/library/std/src/os/illumos/fs.rs b/library/std/src/os/illumos/fs.rs index 63be48b8131b..855d80483d9a 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. /// diff --git a/library/std/src/os/ios/fs.rs b/library/std/src/os/ios/fs.rs index e5df4de0b7f7..7c50a720964a 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. /// diff --git a/library/std/src/os/l4re/fs.rs b/library/std/src/os/l4re/fs.rs index 6d6a535b1e83..009ed2070a43 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. /// diff --git a/library/std/src/os/linux/fs.rs b/library/std/src/os/linux/fs.rs index ab0b2a3eda3f..2d52b7e7e708 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. /// diff --git a/library/std/src/os/macos/fs.rs b/library/std/src/os/macos/fs.rs index 573426d1a864..1cd14c989f24 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. /// diff --git a/library/std/src/os/netbsd/fs.rs b/library/std/src/os/netbsd/fs.rs index fe0be069e5e3..9c20fe854e2d 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. /// diff --git a/library/std/src/os/nto/fs.rs b/library/std/src/os/nto/fs.rs index 8f915b08c9e2..caa0d8c9565d 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")] diff --git a/library/std/src/os/openbsd/fs.rs b/library/std/src/os/openbsd/fs.rs index b8d8d31c5b8c..0474d06bd884 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)] @@ -10,7 +11,7 @@ use crate::os::openbsd::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. /// diff --git a/library/std/src/os/redox/fs.rs b/library/std/src/os/redox/fs.rs index 682ca6a2c030..18b51a1bcb2a 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. /// diff --git a/library/std/src/os/solaris/fs.rs b/library/std/src/os/solaris/fs.rs index 093143737042..1d01ade9c58f 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. /// diff --git a/library/std/src/os/unix/fs.rs b/library/std/src/os/unix/fs.rs index 0eb4e88cfad9..134d7160b5ce 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 diff --git a/library/std/src/os/vita/fs.rs b/library/std/src/os/vita/fs.rs index a5a06764a4dd..3ec2679800b4 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")] diff --git a/library/std/src/os/vxworks/fs.rs b/library/std/src/os/vxworks/fs.rs index 77e6238ca1f5..500fbaefeebe 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")] diff --git a/library/std/src/os/wasi/fs.rs b/library/std/src/os/wasi/fs.rs index 3da8c835511a..a362141318e0 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` diff --git a/library/std/src/os/watchos/fs.rs b/library/std/src/os/watchos/fs.rs index ee215dd59844..64b834f96a9a 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. /// diff --git a/library/std/src/os/windows/fs.rs b/library/std/src/os/windows/fs.rs index 1b013d1c154c..2787058e668e 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