Document the return keyword
Apply suggestions from code review Co-authored-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
dcd470fe1b
commit
d8ea10c95f
1 changed files with 48 additions and 2 deletions
|
|
@ -1000,9 +1000,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")]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue