tapd 0.1.0

wrap tun/tap device to tapd app/lib
Documentation
TAPD interfaces 
==============

Usage
-----
First, add the following to your `Cargo.toml`:

```toml
[dependencies]
tapd = "0.1"
```

Example
-------
The following example creates and configures a TAP interface and starts reading
packets from it.

```rust
use std::{env::args, io::IsTerminal};
use tapd::{pipe_std, pipe_tun};

#[tokio::main(worker_threads = 2)]
async fn main() {
    let mut argv = args();
    let app = argv.next().unwrap();
    match argv.len() {
        2 => pipe_tun(&argv.next().unwrap(), &argv.next().unwrap()).await,
        1 => {
            let a = std::io::stdin();
            let b = std::io::stdout();
            if !a.is_terminal() && !b.is_terminal() {
                pipe_std(&argv.next().unwrap()).await
            }
        }
        _ => {}
    }
    eprintln!("Usage: {app:?} [dev1 dev2 | dev]");
}
```

Linux
-----
You will need the `tun` module to be loaded and root is required to create
interfaces.