Skip to content

Commit

Permalink
Rollup merge of rust-lang#73648 - poliorcetics:return-keyword, r=josh…
Browse files Browse the repository at this point in the history
…triplett

Document the return keyword

Partial fix of rust-lang#34601.

This documents the `return` keyword with two short example to explain it is not needed for the last expression in a function and a long example to show its use when interrupting a function execution early.

I did not put a link to the reference since the only link I found was https://doc.rust-lang.org/stable/reference/expressions/return-expr.html#return-expressions.

@rustbot modify labels: T-doc,C-enhancement
  • Loading branch information
Manishearth authored Jun 26, 2020
2 parents 7f1eb2e + d8ea10c commit 7b744e1
Showing 1 changed file with 48 additions and 2 deletions.
50 changes: 48 additions & 2 deletions src/libstd/keyword_docs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1068,9 +1068,55 @@ mod ref_keyword {}
//
/// Return a value from a function.
///
/// The documentation for this keyword is [not yet complete]. Pull requests welcome!
/// A `return` marks the end of an execution path in a function:
///
/// [not yet complete]: https://github.com/rust-lang/rust/issues/34601
/// ```
/// fn foo() -> i32 {
/// return 3;
/// }
/// assert_eq!(foo(), 3);
/// ```
///
/// `return` is not needed when the returned value is the last expression in the
/// function. In this case the `;` is omitted:
///
/// ```
/// fn foo() -> i32 {
/// 3
/// }
/// assert_eq!(foo(), 3);
/// ```
///
/// `return` returns from the function immediately (an "early return"):
///
/// ```no_run
/// use std::fs::File;
/// use std::io::{Error, ErrorKind, Read, Result};
///
/// fn main() -> Result<()> {
/// let mut file = match File::open("foo.txt") {
/// Ok(f) => f,
/// Err(e) => return Err(e),
/// };
///
/// let mut contents = String::new();
/// let size = match file.read_to_string(&mut contents) {
/// Ok(s) => s,
/// Err(e) => return Err(e),
/// };
///
/// if contents.contains("impossible!") {
/// return Err(Error::new(ErrorKind::Other, "oh no!"));
/// }
///
/// if size > 9000 {
/// return Err(Error::new(ErrorKind::Other, "over 9000!"));
/// }
///
/// assert_eq!(contents, "Hello, world!");
/// Ok(())
/// }
/// ```
mod return_keyword {}

#[doc(keyword = "self")]
Expand Down

0 comments on commit 7b744e1

Please sign in to comment.