LINUX.ORG.RU

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

Исправление gaylord, (текущая версия) :

а в чем разница? и там и там возвращается или мусор под названием - ничего, или некая «ошибка» например число или строка.

Неа.

enum Option<T> {
   Some(T),
   None
}

То есть функция возвращает Option. Это вполне себе определенный тип.

почему оно «перестает работать» не понял. optional, это примитивная форма варантной записи. там поле значения и флажок, что оно валидно. и усьо. ты сам говорил, что вариантная запись - это то что надо.

Потому что если функция возвращает что-то осмысленное (число, строку, файловый дескриптор), то Option бесполезен для возврата ошибки, ибо второе поле у не позволяет передать собственно ошибку. То есть либо получишь Some(T), либо None, который скажет «я не шмогла». Это плохой API для ошибок.

Исходная версия gaylord, :

а в чем разница? и там и там возвращается или мусор под названием - ничего, или некая «ошибка» например число или строка.

Неа.

enum Option<T> {
   Some(T),
   None
}

То есть у функция возвращает Option. Это вполне себе определенный тип.

почему оно «перестает работать» не понял. optional, это примитивная форма варантной записи. там поле значения и флажок, что оно валидно. и усьо. ты сам говорил, что вариантная запись - это то что надо.

Потому что если функция возвращает что-то осмысленное (число, строку, файловый дескриптор), то Option бесполезен для возврата ошибки, ибо второе поле у не позволяет передать собственно ошибку. То есть либо получишь Some(T), либо None, который скажет «я не шмогла». Это плохой API для ошибок.