fuse<R> method
Fuses this with other.
When encoding, the resulting codec encodes with this before
encoding with other.
When decoding, the resulting codec decodes with other before decoding
with this.
In some cases one needs to use the inverted codecs to be able to fuse
them correctly. That is, the output type of this (T) must match the
input type of the second codec other.
Examples:
final jsonToBytes = json.fuse(utf8);
List<int> bytes = jsonToBytes.encode(["json-object"]);
var decoded = jsonToBytes.decode(bytes);
assert(decoded is List && decoded[0] == "json-object");
var inverted = json.inverted;
var jsonIdentity = json.fuse(inverted);
var jsonObject = jsonIdentity.encode(["1", 2]);
assert(jsonObject is List && jsonObject[0] == "1" && jsonObject[1] == 2);
Implementation
// TODO(floitsch): use better example with line-splitter once that one is
// in this library.
Codec<S, R> fuse<R>(Codec<T, R> other) {
return _FusedCodec<S, T, R>(this, other);
}