История изменений
Исправление 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 это иное значение
- Тогда ничего не будет выполнено
- Пусть результатом является иное значение
- Тогда ничего не будет выполнено