The library must provide a `dora_on_input` function, which the runtime invokes when it receives input for the operator. In addition to the input id and value, we pass a callback function for sending output.
By operating on single `(id, value)` pairs instead of sets of them, the operators stay flexible. They can define their own logic for input rules and send outputs as soon as they become available. The callback function design also limits allocations since output values can be be stack-allocated this way.