История изменений
Исправление 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.