method Codec.decode
Reads a value of T from the decoder r with calls of readStr, readI64, ...
Example:
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}")
}Output
41
static fn decode(r: &var Decoder) -> T | DecodeErrorSince. 1.0.0-beta
Parameters
| Name | Type |
|---|---|
r | &var Decoder |
Returns
T
Errors
DecodeError@error- `DecodeError` when the input is not a valid representation.
Effects
none declared (pure unless the body says otherwise)
Defined in: std/ser/ser.oxl:307