diff options
| author | Carol Nichols <carol.nichols@gmail.com> | 2015-06-03 10:12:16 -0400 |
|---|---|---|
| committer | Carol Nichols <carol.nichols@gmail.com> | 2015-06-03 10:12:16 -0400 |
| commit | 9634bcbd3d120e7a13b62bb47e882fc9ce6338cd (patch) | |
| tree | 242e0ba071a808b321eedcf7aaa2e48521df15fb /src/libstd | |
| parent | 5b56d73dc0e8b988f91c44fd9f9e40331451796b (diff) | |
| download | rust-9634bcbd3d120e7a13b62bb47e882fc9ce6338cd.tar.gz rust-9634bcbd3d120e7a13b62bb47e882fc9ce6338cd.zip | |
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.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/macros.rs | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index 32193b4089d..a7c18783025 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -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 { |
