Anonymous
Алексей
http://rurust.github.io/rust_book_ru/src/patterns.html
Vladimir
откуда инфа
всмысле, так всегда в насте можно матчить на _
Vladimir
никаких особых правил нету для _
Vladimir
это не магия "черной дыры"
Anonymous
ну это специальный синтаксис ток для паттернов
Алексей
а с этим полный порядок кстати :)
Алексей
match conn.execute("create database ....", &[]) {
Ok(e) =>
{
println!("База данных создана. ")
}
Err(e) => println!("Ошибка базы данных: {}", e)
}
分解物質
Алексей
и даже ошибки из перечисления обрабаываются :)
Anton
а с этим полный порядок кстати :)
Ну так тоже самое просто без Err() при Err(e) матчится на тег и значение вписывается в 'e', теперь убери Err - значение запишет в 'e'
Vladimir
вот например .. несёт х)
Алексей
Anton
в твоем случае лучше наверно юзать if
Anton
match оставь для enum
Anonymous
Anonymous
но не всегда
Anonymous
с ленивыми итераторами например
Anonymous
и отключает варнинги
Anonymous
еще
Vladimir
а что за ленивые итераторы
Anton
кстати, я хотел бы признатся =)
Anton
я не читал rust-book =)
Anonymous
ну если ты просто напишешь (0..30).map(|x| println!("{:?}", x)); то у тебя ничего не напишется же
Vladimir
Vladimir
и юзать нужно инспект
Anonymous
let _ = юзать нужно
Vladimir
он кстати разве ленивый?
Vladimir
мне вот интересно как он потом будет понимать что-то типа
enum SomeEnum {
SomeVar (u32),
OtherVal {x: u32, y: i32},
}
use SomeEnum::*;
fn main() {
let x = OtherVal{x:32, y:43};
match x {
x @ SomeVar(1...2) => println!("{}", 32) ,
OtherVal{x:x @ 43, ..} => println!("{}",x),
_ => println!("{}", 42),
}
}
Anonymous
Vladimir
inspect, но забей, ответ - да
Anton
Anonymous
инспект не нужен
Алексей
мне вот интересно как он потом будет понимать что-то типа
enum SomeEnum {
SomeVar (u32),
OtherVal {x: u32, y: i32},
}
use SomeEnum::*;
fn main() {
let x = OtherVal{x:32, y:43};
match x {
x @ SomeVar(1...2) => println!("{}", 32) ,
OtherVal{x:x @ 43, ..} => println!("{}",x),
_ => println!("{}", 42),
}
}
тут как раз таки понятно
Vladimir
принтлн в мапе блин
Anonymous
Vladimir
фу
Anonymous
Vladimir
Vladimir
и что
для этого инспект и нужен
Anton
кстати можно
match foo { bar if bar == variable => {} }
Vladimir
чтоб не был {println!(..); x}
Anonymous
и дебаггинга
Vladimir
и вообще, ты вроде за функциональщину топил
Anonymous
Vladimir
от мапа с сайд эффектами кровь из глаз не течет?
Anonymous
Vladimir
а какой любишь
Anonymous
а какой еще есть
Anonymous
детерминизм это хорошо
Anonymous
но имо "функция без сайд эффектов" это оксюморон
Anton
Разговор по кругу
Vladimir
Vladimir
Там до конструкции @ всё одинаково в первом условии
Vladimir
А конструкция @ лишь уточняет при каких значениях матчить
Anonymous
match 37 {
[0, 0, 1, 0, 0, 1, 0, 1] => {}
_ => {}
}
почему не работает
Vladimir
(((
Алексей
Алексей
всем спасибо за пояснения. Интересно что будет следующим? строки здесь крутые, case крутые...
Anonymous
а что будет если написать a @ b
Anonymous
или на месте б нельзя новые переменные
Vladimir
Новые вряд-ли
Vladimir
Вот тут какраз та фишка со старыми может прокатить
Anonymous
лолл
Anonymous
не могу потестить
Vladimir
pattern bindings are not allowed after an @
Vladimir
все-таки в иф пихать надо