Skip to content

Commit

Permalink
Add File::with_options
Browse files Browse the repository at this point in the history
This provides a more fluent API to create files with options, and also avoids the need to import OpenOptions.
  • Loading branch information
Timmmm authored and Tim Hutt committed Oct 15, 2019
1 parent 237d54f commit 6cefcb0
Showing 1 changed file with 33 additions and 2 deletions.
35 changes: 33 additions & 2 deletions src/libstd/fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use crate::time::SystemTime;
///
/// # Examples
///
/// Creates a new file and write bytes to it:
/// Creates a new file and write bytes to it (you can also use [`std::fs::write`]):
///
/// ```no_run
/// use std::fs::File;
Expand All @@ -42,7 +42,7 @@ use crate::time::SystemTime;
/// }
/// ```
///
/// Read the contents of a file into a [`String`]:
/// Read the contents of a file into a [`String`] (you can also use [`std::fs::read`]):
///
/// ```no_run
/// use std::fs::File;
Expand Down Expand Up @@ -397,6 +397,37 @@ impl File {
OpenOptions::new().write(true).create(true).truncate(true).open(path.as_ref())
}

/// Returns a new OpenOptions object.
///
/// This function returns a new OpenOptions object that you can use to
/// open or create a file with specific options if `open()` or `create()`
/// are not appropriate.
///
/// It is equivalent to `OpenOptions::new()` but allows you to write more
/// readable code. Instead of `OpenOptions::new().read(true).open("foo.txt")`
/// you can write `File::with_options().read(true).open("foo.txt"). This
/// also avoids the need to import `OpenOptions`.
///
/// See the [`OpenOptions::new`] function for more details.
///
/// [`OpenOptions::new`]: struct.OpenOptions.html#method.new
///
/// # Examples
///
/// ```no_run
/// #![feature(with_options)]
/// use std::fs::File;
///
/// fn main() -> std::io::Result<()> {
/// let mut f = File::with_options().read(true).open("foo.txt")?;
/// Ok(())
/// }
/// ```
#[unstable(feature = "with_options", issue = "65439")]
pub fn with_options() -> OpenOptions {
OpenOptions::new()
}

/// Attempts to sync all OS-internal metadata to disk.
///
/// This function will attempt to ensure that all in-memory data reaches the
Expand Down

0 comments on commit 6cefcb0

Please sign in to comment.