From ab066ae329d0f56cfbb551d0c0f4b1121ae30477 Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Mon, 6 May 2024 09:52:13 +0900 Subject: [PATCH 1/2] add note about `AlreadyExists` to `create_new` --- library/std/src/fs.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index 409ead0e284..911bc8cabe2 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -408,6 +408,7 @@ impl File { /// /// This function will create a file if it does not exist, or return an error if it does. This /// way, if the call succeeds, the file returned is guaranteed to be new. + /// If a file exists at the target location before, creating file will fail with [`AlreadyExists`]. /// /// This option is useful because it is atomic. Otherwise between checking whether a file /// exists and creating a new one, the file may have been created by another process (a TOCTOU @@ -416,6 +417,8 @@ impl File { /// This can also be written using /// `File::options().read(true).write(true).create_new(true).open(...)`. /// + /// [`AlreadyExists`]: crate::io::ErrorKind::AlreadyExists + /// /// # Examples /// /// ```no_run @@ -1071,6 +1074,7 @@ impl OpenOptions { /// /// No file is allowed to exist at the target location, also no (dangling) symlink. In this /// way, if the call succeeds, the file returned is guaranteed to be new. + /// If a file exists at the target location before, creating file will fail with [`AlreadyExists`]. /// /// This option is useful because it is atomic. Otherwise between checking /// whether a file exists and creating a new one, the file may have been @@ -1084,6 +1088,7 @@ impl OpenOptions { /// /// [`.create()`]: OpenOptions::create /// [`.truncate()`]: OpenOptions::truncate + /// [`AlreadyExists`]: io::ErrorKind::AlreadyExists /// /// # Examples /// From 81f5175868eefa9a12b27377c9fc474d7033cee6 Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Mon, 6 May 2024 12:16:31 +0900 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com> --- library/std/src/fs.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index 911bc8cabe2..fb607e05592 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -408,7 +408,9 @@ impl File { /// /// This function will create a file if it does not exist, or return an error if it does. This /// way, if the call succeeds, the file returned is guaranteed to be new. - /// If a file exists at the target location before, creating file will fail with [`AlreadyExists`]. + /// If a file exists at the target location, creating a new file will fail with [`AlreadyExists`] + /// or another error based on the situation. See [`OpenOptions::open`] for a + /// non-exhaustive list of likely errors. /// /// This option is useful because it is atomic. Otherwise between checking whether a file /// exists and creating a new one, the file may have been created by another process (a TOCTOU @@ -1074,7 +1076,9 @@ impl OpenOptions { /// /// No file is allowed to exist at the target location, also no (dangling) symlink. In this /// way, if the call succeeds, the file returned is guaranteed to be new. - /// If a file exists at the target location before, creating file will fail with [`AlreadyExists`]. + /// If a file exists at the target location, creating a new file will fail with [`AlreadyExists`] + /// or another error based on the situation. See [`OpenOptions::open`] for a + /// non-exhaustive list of likely errors. /// /// This option is useful because it is atomic. Otherwise between checking /// whether a file exists and creating a new one, the file may have been