README.md
Structurez
==========
A playground for data structures
### `Treeset`
An ordered set wrapping `:gb_sets`
### `AgentDict`
A dict backed by an Agent. WARNING: This should make you cringe. It's essentially a mutable Dict. Only use this when you need concurrent access. There are a lot of other terrible ways to use it.
### `TCPClient.stream/1`
`Streamz.Net.TCPClient.stream/1` accepts a keyword list with `:host` and `:port` set. It will connect the the host and port and supports Enumerable and Collectable. This enables a bunch of cool things.
#### Connecting:
```elixir
n = TCPClient.stream([host: "localhost", port: 4444])
```
#### Reading data:
```elixir
n |> Enum.each &IO.inspect(&1)
```
#### Writing data:
```elixir
["Hello", "World"] |> Enum.into(n)
```
#### Echo Client (writes any data it receives back to the server):
```elixir
n |> Enum.into(n)
```
## Up Next
There are tons of possibilities. Here's what is on the current radar.
- `TCPServer/1` - A server version of `TCPClient`
- `UDPClient/1` - A UDP version of `TCPClient`
- `UDPServer/1` - A server version of `UDPClient`
- `WebSockets.stream/1` - Bidirection stream for a websocket connection.