Skip to content

Commit

Permalink
Merge pull request #1322 from rust-lang-ru/gitlocalize-27280
Browse files Browse the repository at this point in the history
Translate ch18-01-all-the-places-for-patterns.md via GitLocalize
  • Loading branch information
ava57r authored Nov 27, 2023
2 parents e38bd29 + 6282f0e commit 66f5a73
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions rustbook-ru/src/ch18-01-all-the-places-for-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,21 +83,21 @@ match x {

Мы адаптируем итератор с помощью метода `enumerate`, чтобы он генерировал кортеж, состоящий из значения и индекса этого значения. Первым сгенерированным значением будет кортеж `(0, 'a')`. Когда это значение сопоставляется с шаблоном `(index, value)`, `index` будет равен `0`, а `value` будет равно `'a'` и будет напечатана первая строка выходных данных.

### Оператор `let`
### Инструкция `let`

До этой главы мы подробно обсуждали только использование шаблонов с `match` и `if let`, но на самом деле, мы использовали шаблоны и в других местах, в том числе в операторах `let`. Например, рассмотрим следующее простое назначение переменной с помощью `let`:
До этой главы мы подробно обсуждали только использование шаблонов с `match` и `if let`, но на самом деле, мы использовали шаблоны и в других местах, в том числе в инструкциях `let`. Например, рассмотрим следующее простое назначение переменной с помощью `let`:

```rust
let x = 5;
```

Каждый раз, когда вы использовали подобным образом оператор `let` , вы использовали шаблоны, хотя могли и не осознавать этого! Более формально оператор `let` выглядит так:
Каждый раз, когда вы использовали подобным образом инструкцию `let`, вы использовали шаблоны, хотя могли и не осознавать этого! Более формально инструкция `let` выглядит так:

```text
let PATTERN = EXPRESSION;
```

В выражениях типа `let x = 5;` с именем переменной в слоте `PATTERN`, имя переменной является просто отдельной, простой формой шаблона. Rust сравнивает выражение с шаблоном и присваивает любые имена, которые он находит. Так что в примере `let x = 5;`, `x` - это шаблон, который означает "привязать то, что соответствует здесь, переменной `x`". Поскольку имя `x` является полностью шаблоном, этот шаблон фактически означает "привязать все к переменной `x` независимо от значения".
В инструкциях типа `let x = 5;` с именем переменной в слоте `PATTERN`, имя переменной является просто отдельной, простой формой шаблона. Rust сравнивает выражение с шаблоном и присваивает любые имена, которые он находит. Так что в примере `let x = 5;`, `x` - это шаблон, который означает "привязать то, что соответствует здесь, переменной `x`". Поскольку имя `x` является полностью шаблоном, этот шаблон фактически означает "привязать все к переменной `x` независимо от значения".

Чтобы более чётко увидеть аспект сопоставления с шаблоном `let`, рассмотрим листинг 18-4, в котором используется шаблон с `let` для деструктурирования кортежа.

Expand Down

0 comments on commit 66f5a73

Please sign in to comment.