Improve try! docs to make clearer it returns Result.

The API documentation is not explicit enough that because `try!` returns
`Err` early for you, you can only use it in functions that return
`Result`. The book mentions this, but if you come across `try!` outside
of the book and look it up in the docs, this restriction on the return
type of the function is not particularly clear.
This commit is contained in:
Carol Nichols
2015-06-03 10:12:16 -04:00
parent 5b56d73dc0
commit 9634bcbd3d
2 changed files with 30 additions and 2 deletions

View File

@@ -117,7 +117,33 @@ macro_rules! println {
}
/// Helper macro for unwrapping `Result` values while returning early with an
/// error if the value of the expression is `Err`.
/// error if the value of the expression is `Err`. Can only be used in
/// functions that return `Result` because of the early return of `Err` that
/// it provides.
///
/// # Examples
///
/// ```
/// use std::io;
/// use std::fs::File;
///
/// fn write_to_file_using_try() -> Result<(), io::Error> {
/// let mut file = try!(File::create("my_best_friends.txt"));
/// try!(file.write_line("This is a list of my best friends."));
/// println!("I wrote to the file");
/// Ok()
/// }
/// // This is equivalent to:
/// fn write_to_file_using_match() -> Result<(), io::Error> {
/// let mut file = try!(File::create("my_best_friends.txt"));
/// match file.write_line("This is a list of my best friends.") {
/// Ok(_) => (),
/// Err(e) => return Err(e),
/// }
/// println!("I wrote to the file");
/// Ok()
/// }
/// ```
#[macro_export]
#[stable(feature = "rust1", since = "1.0.0")]
macro_rules! try {