mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Document for
keyword
This commit is contained in:
parent
a5c4a382b7
commit
f7a66388f3
@ -292,6 +292,77 @@ mod extern_keyword { }
|
|||||||
/// [Reference]: https://doc.rust-lang.org/reference/items/functions.html
|
/// [Reference]: https://doc.rust-lang.org/reference/items/functions.html
|
||||||
mod fn_keyword { }
|
mod fn_keyword { }
|
||||||
|
|
||||||
|
#[doc(keyword = "for")]
|
||||||
|
//
|
||||||
|
/// The `for` keyword.
|
||||||
|
///
|
||||||
|
/// `for` is primarily used in for-in-loops, but it has a few other pieces of syntactic uses such as
|
||||||
|
/// `impl Trait for Type` (see [`impl`] for more info on that). for-in-loops, or to be more
|
||||||
|
/// precise, iterator loops, are a simple syntactic sugar over an exceedingly common practice
|
||||||
|
/// within Rust, which is to loop over an iterator until that iterator returns None (or [`break`]
|
||||||
|
/// is called).
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// for i in 0..5 {
|
||||||
|
/// println!("{}", i * 2);
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// for i in std::iter::repeat(5) {
|
||||||
|
/// println!("turns out {} never stops being 5", i);
|
||||||
|
/// break; // would loop forever otherwise
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// 'outer: for x in 5..50 {
|
||||||
|
/// for y in 0..10 {
|
||||||
|
/// if x == y {
|
||||||
|
/// break 'outer;
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// As shown in the example above, `for` loops (along with all other loops) can be tagged, using
|
||||||
|
/// similar syntax to lifetimes (only visually similar, entirely distinct in practice). Giving the
|
||||||
|
/// same tag to `break` breaks the tagged loop, which is useful for inner loops. It is definitely
|
||||||
|
/// not a goto.
|
||||||
|
///
|
||||||
|
/// A `for` loop expands as shown:
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn code() { }
|
||||||
|
/// # let iterator = 0..2;
|
||||||
|
/// for loop_variable in iterator {
|
||||||
|
/// code()
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn code() { }
|
||||||
|
/// # let iterator = 0..2;
|
||||||
|
/// {
|
||||||
|
/// let mut _iter = std::iter::IntoIterator::into_iter(iterator);
|
||||||
|
/// loop {
|
||||||
|
/// match _iter.next() {
|
||||||
|
/// Some(loop_variable) => {
|
||||||
|
/// code()
|
||||||
|
/// },
|
||||||
|
/// None => break,
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// More details on the functionality shown can be seen at the [`IntoIterator`] docs.
|
||||||
|
///
|
||||||
|
/// For more information on for-loops, see the [Rust book] or the [Reference].
|
||||||
|
///
|
||||||
|
/// [`impl`]: keyword.impl.html
|
||||||
|
/// [`break`]: keyword.break.html
|
||||||
|
/// [`IntoIterator`]: iter/trait.IntoIterator.html
|
||||||
|
/// [Rust book]: https://doc.rust-lang.org/book/2018-edition/ch03-05-control-flow.html#looping-through-a-collection-with-for
|
||||||
|
/// [Reference]: https://doc.rust-lang.org/reference/expressions/loop-expr.html#iterator-loops
|
||||||
|
mod for_keyword { }
|
||||||
|
|
||||||
#[doc(keyword = "let")]
|
#[doc(keyword = "let")]
|
||||||
//
|
//
|
||||||
/// The `let` keyword.
|
/// The `let` keyword.
|
||||||
|
Loading…
Reference in New Issue
Block a user