zkteco 1.0.0

A pure-Rust client for ZKTeco biometric attendance / access-control terminals (TCP/UDP protocol). A faithful port of the Python `pyzk` library.
Documentation
//! List all users enrolled on the device.
//!
//! Run with: `cargo run --example get_users -- 192.168.1.201 [port]`

use std::time::Duration;
use zkteco::Zk;

fn main() -> zkteco::ZkResult<()> {
    let mut args = std::env::args().skip(1);
    let ip = args.next().expect("usage: get_users <ip> [port]");
    let port: u16 = args.next().and_then(|p| p.parse().ok()).unwrap_or(4370);

    let mut zk = Zk::builder(ip)
        .port(port)
        .timeout(Duration::from_secs(10))
        .omit_ping(true)
        .build();

    zk.connect()?;
    // Disable user interaction while we read in bulk, then restore it.
    zk.disable_device()?;
    let users = zk.get_users()?;
    zk.enable_device()?;
    zk.disconnect()?;

    println!("{} users", users.len());
    for u in users {
        println!(
            "  uid={:<4} id={:<10} name={:<20} priv={} card={}",
            u.uid, u.user_id, u.name, u.privilege, u.card
        );
    }
    Ok(())
}