OxL Справочник OxL
РусскийEnglish

9.4 Декодирование и проверка

  • Отсутствует обязательное поле → DecodeError.Missing.
  • Значение не проходит инвариант уточнённого типа или invariant → DecodeError.Invalid.
  • Неизвестные поля пропускаются; при @preserve_unknown на типе — сохраняются и записываются обратно при повторной сериализации. @preserve_unknown допустим только на data (иначе ошибка компиляции schema-attr) и действует только в бинарном формате OxL: сохранённые необработанные записи (тег и значение) пишутся после известных полей в порядке чтения; JSON, MessagePack и CBOR неизвестные поля не читают и не пишут. Вложенные сообщения хранят свои неизвестные поля, если у них есть атрибут. Сохранённые поля не участвуют в ==, хеше и Show (D-8053; DIV-005; D-7610).
  • Неизвестный вариант @open enum отображается в автоматический вариант Unknown(tag: u32).
  • В rpc ошибка декодирования запроса возвращается клиенту как ProtocolError.InvalidArgument; обработчик не вызывается.

См. также

Исходник: docs/spec/oxl-standard.md