# Class Uq_engines.map_engine

    class [['a, 'b]] map_engine : map_done:('a -> 'b engine_state) -> ?map_error:exn -> 'b engine_state -> ?map_aborted:unit -> 'b engine_state -> 'a #engine -> ['b] engine

The `map_engine` observes the argument engine, and when the state changes to ``Done`, ``Error`, or ``Aborted`, the corresponding mapping function is called, and the resulting state becomes the state of the mapped engine.

After the state change to ``Done`, ``Error`, or ``Aborted` has been observed, the map engine detaches from the argument engine, and no further state changes are recognized.

The state ``Working` cannot be mapped to another state. It is an error to map final states to ``Working`.

If the mapped engine is aborted, this request will be forwarded to the argument engine.

`map_done` : Maps the ``Done` state of the argument engine to another state. The argument of `map_done` is the argument of the ``Done` state. Note that `map_done` is non-optional only because of typing. If it were optional, the type checker would infer `'a = 'b`.
`map_error` : Maps the ``Error` state of the argument engine to another state. The argument of `map_error` is the argument of the ``Error` state.
`map_aborted` : Maps the ``Aborted` state of the argument engine to another state.