diff options
| author | York Xiang <bombless@126.com> | 2015-04-08 10:29:11 +0800 |
|---|---|---|
| committer | York Xiang <bombless@126.com> | 2015-04-08 10:29:11 +0800 |
| commit | c9454b1a02754b8cdb46fec00241d5fd2171ef9e (patch) | |
| tree | 0a1860b6d8d884b250487dab273e8bc63e2b6ee1 /src | |
| parent | d9146bf8ba0bdf98a46c4656899e54802e96ac0c (diff) | |
| download | rust-c9454b1a02754b8cdb46fec00241d5fd2171ef9e.tar.gz rust-c9454b1a02754b8cdb46fec00241d5fd2171ef9e.zip | |
Update "`let` is used to introduce variables" paragraph
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc/complement-design-faq.md | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/doc/complement-design-faq.md b/src/doc/complement-design-faq.md index 3edbcbe62c5..0f2c37a5abf 100644 --- a/src/doc/complement-design-faq.md +++ b/src/doc/complement-design-faq.md @@ -163,13 +163,17 @@ This is to make the language easier to parse for humans, especially in the face of higher-order functions. `fn foo<T>(f: fn(int): int, fn(T): U): U` is not particularly easy to read. -## `let` is used to introduce variables +## Why is `let` used to introduce variables? -`let` not only defines variables, but can do pattern matching. One can also -redeclare immutable variables with `let`. This is useful to avoid unnecessary -`mut` annotations. An interesting historical note is that Rust comes, -syntactically, most closely from ML, which also uses `let` to introduce -bindings. +We don't use the term "variable", instead, we use "variable bindings". The +simplest way for binding is the `let` syntax, other ways including `if let`, +`while let` and `match`. Bindings also exist in function arguments positions. + +Bindings always happen in pattern matching positions, and it's also Rust's way +to declare mutability. One can also redeclare mutability of a binding in +pattern matching. This is useful to avoid unnecessary `mut` annotations. An +interesting historical note is that Rust comes, syntactically, most closely +from ML, which also uses `let` to introduce bindings. See also [a long thread][alt] on renaming `let mut` to `var`. |
