LINUX.ORG.RU

История изменений

Исправление quantum-troll, (текущая версия) :

Давай рассахарю:

match release_info() {
    Channel::Stable(v) =>
        match v {
            Semver {1, 88, ..} => {
                println!("`let_chains` was stabilized in this version");
            }
            _ => {}
        }
    _ => {}
}


Работает так:

Разберём результат функции release_info():

- Пусть результатом является значение вида `Channel::Stable(v)`, где v некоторое значение
    - Разберём v
        - Пусть v совпадает со значением `Semver {1, 88, ..}`
            - Тогда будет выполнено `println!(...)`
        - Пусть v это иное значение
            - Тогда ничего не будет выполнено
- Пусть результатом является иное значение
    - Тогда ничего не будет выполнено


`if let PATTERN = EXPR {...}` это буквально сахар для `match EXPR { PATTERN => ..., _ => {} }`.

Исправление quantum-troll, :

Давай рассахарю:

match release_info() {
    Channel::Stable(v) =>
        match v {
            Semver {1, 88, ..} => {
                println!("`let_chains` was stabilized in this version");
            }
            _ => {}
        }
    _ => {}
}


Работает так:

Разберём результат функции release_info():

- Пусть результатом является значение вида `Channel::Stable(v)`, где v некоторое значение
    - Разберём v
        - Пусть v совпадает со значением `Semver {1, 88, ..}`
            - Тогда будет выполнено `println!(...)`
        - Пусть v это иное значение
            - Тогда ничего не будет выполнено
- Пусть результатом является иное значение
    - Тогда ничего не будет выполнено


`if let PATTERN = EXPR {...}` это буквально сахар для `match EXPR { PATTERN => ..., _ => {}}`.

Исходная версия quantum-troll, :

Давай рассахарю:

match release_info() {
    Channel::Stable(v) =>
        match v {
            Semver {1, 88, ..} => {
                println!("`let_chains` was stabilized in this version");
            }
            _ => {}
        }
    _ => {}
}


Работает так:

Разберём результат функции release_info():

- Пусть результатом является значение вида `Channel::Stable(v)`, где v некоторое значение
    - Разберём v
        - Пусть v совпадает со значением `Semver {1, 88, ..}`
            - Тогда будет выполнено `println!(...)`
        - Пусть v это иное значение
            - Тогда ничего не будет выполнено
- Пусть результатом является иное значение
    - Тогда ничего не будет выполнено