Move freeze_* methods to OpenOptionsExt2

This commit is contained in:
Chris Denton
2026-03-06 11:42:10 +00:00
committed by Mark Rousskov
parent 637a138ab4
commit 4f1e85d875
+23 -12
View File
@@ -138,6 +138,8 @@ fn seek_write(&self, buf: &[u8], offset: u64) -> io::Result<usize> {
}
/// Windows-specific extensions to [`fs::OpenOptions`].
// WARNING: This trait is not sealed. DON'T add any new methods!
// Add them to OpenOptionsExt2 instead.
#[stable(feature = "open_options_ext", since = "1.10.0")]
pub trait OpenOptionsExt {
/// Overrides the `dwDesiredAccess` argument to the call to [`CreateFile`]
@@ -305,18 +307,6 @@ pub trait OpenOptionsExt {
/// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ne-winnt-security_impersonation_level
#[stable(feature = "open_options_ext", since = "1.10.0")]
fn security_qos_flags(&mut self, flags: u32) -> &mut Self;
/// If set to `true`, prevent the "last access time" of the file from being changed.
///
/// Default to `false`.
#[unstable(feature = "windows_freeze_file_times", issue = "149715")]
fn freeze_last_access_time(&mut self, freeze: bool) -> &mut Self;
/// If set to `true`, prevent the "last write time" of the file from being changed.
///
/// Default to `false`.
#[unstable(feature = "windows_freeze_file_times", issue = "149715")]
fn freeze_last_write_time(&mut self, freeze: bool) -> &mut Self;
}
#[stable(feature = "open_options_ext", since = "1.10.0")]
@@ -345,7 +335,28 @@ fn security_qos_flags(&mut self, flags: u32) -> &mut OpenOptions {
self.as_inner_mut().security_qos_flags(flags);
self
}
}
#[unstable(feature = "windows_freeze_file_times", issue = "149715")]
pub trait OpenOptionsExt2: Sealed {
/// If set to `true`, prevent the "last access time" of the file from being changed.
///
/// Default to `false`.
#[unstable(feature = "windows_freeze_file_times", issue = "149715")]
fn freeze_last_access_time(&mut self, freeze: bool) -> &mut Self;
/// If set to `true`, prevent the "last write time" of the file from being changed.
///
/// Default to `false`.
#[unstable(feature = "windows_freeze_file_times", issue = "149715")]
fn freeze_last_write_time(&mut self, freeze: bool) -> &mut Self;
}
#[unstable(feature = "sealed", issue = "none")]
impl Sealed for OpenOptions {}
#[unstable(feature = "windows_freeze_file_times", issue = "149715")]
impl OpenOptionsExt2 for OpenOptions {
fn freeze_last_access_time(&mut self, freeze: bool) -> &mut Self {
self.as_inner_mut().freeze_last_access_time(freeze);
self