cu 0.1.1

Low level bindings to cuda apis
use std::ops::{Deref, DerefMut};
use core::Device as DeviceCore;

#[derive(Debug, Clone)]
pub struct Device(DeviceCore);

impl Device {
    pub fn count() -> usize {
        return DeviceCore::count();
    }
    pub fn list() -> Vec<Device> {
        (0..Device::count()).map(|i|
            Device(DeviceCore::new(i))
        ).collect()
    }
    pub fn new(i: usize) -> Self {
        return Device(DeviceCore::new(i));
    }
}

impl Deref for Device {
    type Target = DeviceCore;

    fn deref(&self) -> &Self::Target {
        return &self.0;
    }
}

impl DerefMut for Device {
    fn deref_mut(&mut self) -> &mut Self::Target {
        return &mut self.0;
    }
}