wl-data-control-protocol-evt 1.0.0

Implementation of ext-data-control Wayland protocol, pollable and event based
Documentation
## `wl-data-control-protocol-evt`

Implementation of `ext-data-control` Wayland protocol that is:

1. pollable
2. event based

### API

Full examples can be found in [poll.rs](/examples/poll.rs) and [tokio.rs](/examples/tokio.rs).

Here's a quick `poll`-based API overview:

```rust,no_run
use wl_data_control_protocol_evt::{ExtDataControlEvent, ExtDataControlStream};

let mut stream = ExtDataControlStream::new().unwrap();
let fd = stream.as_fd();

loop {
    poll([fd], IN)?;

    // read
    let events = stream.drain()?;
    for event in events {
        if let ExtDataControlEvent::Received(text) = event {
            println!("copied {text}")
        }
    }

    // or write
    stream.offer_text("try pasting this").unwrap()
}
```

For async IO you can use something like [AsyncFd](https://docs.rs/tokio/latest/tokio/io/unix/struct.AsyncFd.html):

```rust,no_run
let stream = ExtDataControlStream::new()?;
let async_fd = AsyncFd::new(stream.as_raw_fd())?;

loop {
    let mut guard = async_fd.readable().await?;
    let events = stream.drain()?;
    guard.clear_ready();

    // process `events`
}
```