вызвал вопрос:
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
Разве в данном случае оба arm-а матчинга не должны возвращать тип u32? Или continue это некое исключение и натыкаясь на него компилятор забивает чо там в итоге вернёт ветка?
Обе ветки должны возвращать одинаковый тип, да. Просто некоторые языковые конструкции ( panic!(), loop {}, etc) "возвращают" произвольный тип, потому что они никогда не возвращаются.
continue возвращает тип Never который приводится к любому другому типу
В будущем continue будет возвращать !, который коэрсится куда угодно
Обсуждают сегодня