enet 0.3.0

High-level, rust-y bindings to the ENet library
Documentation
extern crate enet;

use std::net::Ipv4Addr;

use anyhow::Context;
use enet::*;

fn main() -> anyhow::Result<()> {
    let enet = Enet::new().context("could not initialize ENet")?;

    let local_addr = Address::new(Ipv4Addr::LOCALHOST, 9001);

    let mut host = enet
        .create_host::<()>(
            Some(&local_addr),
            10,
            ChannelLimit::Maximum,
            BandwidthLimit::Unlimited,
            BandwidthLimit::Unlimited,
        )
        .context("could not create host")?;

    loop {
        match host.service(1000).context("service failed")? {
            Some(Event::Connect(_)) => println!("new connection!"),
            Some(Event::Disconnect(..)) => println!("disconnect!"),
            Some(Event::Receive {
                channel_id,
                ref packet,
                ..
            }) => println!(
                "got packet on channel {}, content: '{}'",
                channel_id,
                std::str::from_utf8(packet.data()).unwrap()
            ),
            _ => (),
        }
    }
}