# fuse<R> method

Codec<S, R> fuse <R>(Codec<T, R> other)

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);
    }