@@ -653,15 +653,29 @@ impl OpenOptions {
653
653
/// # Errors
654
654
///
655
655
/// This function will return an error under a number of different
656
- /// circumstances, to include but not limited to:
657
- ///
658
- /// * Opening a file that does not exist without setting `create` or
659
- /// `create_new`.
660
- /// * Attempting to open a file with access that the user lacks
661
- /// permissions for
662
- /// * Filesystem-level errors (full disk, etc)
663
- /// * Invalid combinations of open options (truncate without write access,
664
- /// no access mode set, etc)
656
+ /// circumstances. Some of these error conditions are listed here, together
657
+ /// with their [`ErrorKind`]. The mapping to [`ErrorKind`]s is not part of
658
+ /// the compatiblity contract of the function, especially the `Other` kind
659
+ /// might change to more specific kinds in the future.
660
+ ///
661
+ /// * [`NotFound`]: The specified file does not exist and neither `create`
662
+ /// or `create_new` is set.
663
+ /// * [`NotFound`]: One of the directory components of the file path does
664
+ /// not exist.
665
+ /// * [`PermissionDenied`]: The user lacks permission to get the specified
666
+ /// access rights for the file.
667
+ /// * [`PermissionDenied`]: The user lacks permission to open one of the
668
+ /// directory components of the specified path.
669
+ /// * [`AlreadyExists`]: `create_new` was specified and the file already
670
+ /// exists.
671
+ /// * [`InvalidInput`]: Invalid combinations of open options (truncate
672
+ /// without write access, no access mode set, etc.).
673
+ /// * [`Other`]: One of the directory components of the specified file path
674
+ /// was not, in fact, a directory.
675
+ /// * [`Other`]: Filesystem-level errors: full disk, write permission
676
+ /// requested on a read-only file system, exceeded disk quota, too many
677
+ /// open files, too long filename, too many symbolic links in the
678
+ /// specified path (Unix-like systems only), etc.
665
679
///
666
680
/// # Examples
667
681
///
@@ -670,6 +684,13 @@ impl OpenOptions {
670
684
///
671
685
/// let file = OpenOptions::new().open("foo.txt");
672
686
/// ```
687
+ ///
688
+ /// [`ErrorKind`]: ../io/enum.ErrorKind.html
689
+ /// [`AlreadyExists`]: ../io/enum.ErrorKind.html#variant.AlreadyExists
690
+ /// [`InvalidInput`]: ../io/enum.ErrorKind.html#variant.InvalidInput
691
+ /// [`NotFound`]: ../io/enum.ErrorKind.html#variant.NotFound
692
+ /// [`Other`]: ../io/enum.ErrorKind.html#variant.Other
693
+ /// [`PermissionDenied`]: ../io/enum.ErrorKind.html#variant.PermissionDenied
673
694
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
674
695
pub fn open < P : AsRef < Path > > ( & self , path : P ) -> io:: Result < File > {
675
696
self . _open ( path. as_ref ( ) )
0 commit comments