История изменений
Исправление
gaylord,
(текущая версия)
:
На самом деле, если бы разработчики Rust с самого начала признали себе что ошибки должны быть частью языка (примерно то, что происходит с Pin сейчас), мы могли получить что-то такое:
fn (x: i32) // не возвращает ничего
fn (x: i32) -> !Error // не возвращает ничего или возвращает ошибку
Под капотом был бы тот же самый Result, но при этом нам не нужно было бы постоянно все врапить в Ok.
И был оператор возврата ошибки:
fn (x: i32) -> !Error {
return !Error::new("caboom");
}
Исходная версия
gaylord,
:
На самом деле, если бы разработчики Rust с самого начала признали себе что ошибки должны быть частью языка (примерно то, что происходит с Pin сейчас), мы могли получить что-то такое:
fn (x: i32) // не возвращает ничего
fn (x: i32) -> ! // не возвращает ничего или возвращает ошибку
Под капотом был бы тот же самый Result, но при этом нам не нужно было бы постоянно все врапить в Ok.