op ?
?
Определяется в
- 5.2 Приоритет и ассоциативность — Приоритет и ассоциативность
- 5.3 Перегрузка и пользовательские операторы — Перегрузка встроенных операторов — объявления op в impl
- 1.6 Операторы и разделители — + - * / % ** +% -% % +| -| | & | ^ ~ << >> && || !
- 4.3 Конструирование и конструкторы — Литерал. T{ f1: e1, f2, ..base }
- 6.5 Ошибки — Исключений нет. Ошибка — значение типа, помеченного @error, возвращаемое через объединение.
- 1.2 Завершение инструкций — Инструкция завершается ; или переводом строки.
Примеры
@error data NotFound { what: str }
@error enum PayError { Declined(reason: str), Fraud }
fn charge(card: Card, sum: Money) -> Receipt | PayError | NetError net {
let token = Vault.tokenize(card)? // ? пробрасывает ошибки вызова
if sum <= Money.zero() { fail PayError.Declined("zero sum") }
Bank.pay(token, sum)
}Связанные диагностики
chained-comparison, not-callable, not-overloadable, operator-decl, range-not-iterable, invalid-char, bad-init, missing-field, must-close, positional-literal, sealed-literal, fail-type, question-context, unhandled-error