eznet 0.2.0

a simple net lib
Documentation
<div align="center">

# eznet

a simple net lib

</div>

[ENet](http://enet.bespin.org/)/[laminar](https://github.com/TimonPost/laminar)
style, [Quinn](https://github.com/quinn-rs/quinn) ([QUIC](https://en.wikipedia.org/wiki/QUIC))
based, simple to use and async net lib with configurable reliability and ordering.

## Features:

- Packets are encrypted (but not really securely [TODO]#todo: 1)

- Reliable ordered, reliable sequenced, reliable unordered, unreliable sequenced and unreliable unordered packets

- Easy to use

- Async/await

## Example:

```rust
// examples/simple-server.rs
let bind_addr = SocketAddrV4::new(Ipv4Addr::LOCALHOST, 13331);
let mut listener = Listener::bind(bind_addr.into());

while let Some(socket) = listener.next().await {
    socket
        .send(Packet::ordered_from(
            format!("Hello {}!", socket.remote()).as_bytes(),
            None,
        ))
        .await
        .unwrap();
}

// examples/simple-client.rs
let server_addr = SocketAddrV4::new(Ipv4Addr::LOCALHOST, 13331);
let mut socket = Socket::connect(server_addr.into()).await.unwrap();

println!(
    "{}",
    std::str::from_utf8(&socket.recv().await.unwrap().bytes[..]).unwrap()
);
```

## TODO:

- [ ] Encryption doesn't protect
      from MITM attacks at the moment.
      Only self signed server side
      certificates are used and clients
      accept everything. Add certificates,
      private keys, server names and DNS. (1)

- [ ] Open socket magic byte test to
      filter out random scanners and
      'accidental' connections. (2)

- [ ] Disconnect message when closing. (3)

- [ ] Configurable buffer capacity. (4)

- [ ] if packets are sent slightly faster
      than once per millisecond, none of them
      get actually sent, all of them are buffered. (5)

- [ ] actually drop 'old' sequenced packets (6)

## License

Licensed under either of [MIT license](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE) license.

I am not a lawyer.