udp-over-tcp is a library and binaries for tunneling UDP datagrams over
a TCP stream.

Some programs/protocols only work over UDP. And some networks only allow TCP.
This is where `udp-over-tcp` comes in handy. This library comes in two parts:

* `udp2tcp` - Forwards incoming UDP datagrams over a TCP stream. The return
  stream is translated back to datagrams and sent back out over UDP again.
  This part can be easily used as both a library and a binary.
  So it can be run standalone, but can also easily be included in other
  Rust programs. The UDP socket is connected to the peer address of the first
  incoming datagram. So one [`Udp2Tcp`] instance can handle traffic from a
  single peer only.
* `tcp2udp` - Accepts connections over TCP and translates + forwards the
  incoming stream as UDP datagrams to the destination specified during setup
  and on the command line.
  Designed mostly to be a standalone executable to run on servers. But can be
  consumed as a Rust library as well.
