battery 0.3.0

Cross-platform information about batteries
Documentation
use std::iter;

use crate::Battery;
pub use self::device::IoKitDevice;

mod iokit;
mod device;

#[derive(Debug)]
pub struct IoKitDiscovery(Option<device::IoKitDevice>);

impl IoKitDiscovery {
    pub fn new() -> IoKitDiscovery {
        let inner = match device::IoKitDevice::new() {
            Ok(device) => Some(device),
            Err(_) => None,
        };

        IoKitDiscovery(inner)
    }
}

impl iter::Iterator for IoKitDiscovery {
    type Item = Battery;

    fn next(&mut self) -> Option<Self::Item> {
        match self.0.take() {
            Some(device) => Some(Battery::from(device)),
            None => None,
        }
    }
}