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

method Codec.decode

Reads a value of T from the decoder r with calls of readStr, readI64, ...

Example:

oxl✓ проверяется в CI
use std.ser { Codec, Encoder, Decoder, Schema, encode, decode, hex, EncodeError, DecodeError }

data Shift {}

impl Codec<i64> for Shift {
  static fn encode(x: &i64, w: &var Encoder) -> () | EncodeError { w.writeI64(x + 1) }
  static fn decode(r: &var Decoder) -> i64 | DecodeError { r.readI64()? - 1 }
  static fn schema() -> Schema => Schema.of("int64")
}

data Subject {
  @codec(Shift) n: i64
}

fn main() io {
  let b = encode(&Subject{ n: 41 })!
  print("{decode<Subject>(&b)!.n}")
}
Вывод
41
static fn decode(r: &var Decoder) -> T | DecodeError

С версии. 1.0.0-beta

Параметры

ИмяТип
r&var Decoder

Возвращает

T

Ошибки

  • DecodeError @error
  • `DecodeError` when the input is not a valid representation.

Эффекты

не объявлены (чистая, пока тело не говорит иное)

Определено в: std/ser/ser.oxl:307

См. также