@ @error
@error
Применяется к: data, enum
Раздел: §6.5
Синтаксис
Attr = "@" Path [ "(" [ AttrArgs ] ")" ] ;Грамматика: Прил. A
Определяется в
- 6.5 Ошибки — Исключений нет. Ошибка — значение типа, помеченного @error, возвращаемое через объединение.
- 16.3 gRPC и protobuf — import proto "payments.proto" генерирует extern service и типы; вызовы — как к обычным сервисам через connect.
Примеры
@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)
}Связанные диагностики
fail-type, question-context, unhandled-error, import-skip