LINUX.ORG.RU

История изменений

Исправление 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.