#[cfg(target_os = "linux")]
fn main() -> Result<(), nvml_wrapper::error::NvmlErrorWithSource> {
use nvml_wrapper::error::NvmlError;
use nvml_wrapper::Nvml;
use nvml_wrapper::high_level::EventLoopProvider;
use nvml_wrapper::high_level::Event::*;
let nvml = Nvml::init()?;
let device = nvml.device_by_index(0)?;
let mut event_loop = nvml.create_event_loop(vec![&device])?;
event_loop.run_forever(|event, state| match event {
Ok(event) => match event {
ClockChange(device) => {
if let Ok(uuid) = device.uuid() {
println!("ClockChange event for device with UUID {:?}", uuid);
} else {
}
}
PowerStateChange(device) => {
if let Ok(uuid) = device.uuid() {
println!("PowerStateChange event for device with UUID {:?}", uuid);
} else {
}
}
_ => println!("A different event occurred: {:?}", event),
},
Err(e) => match e {
NvmlError::Unknown => {}
_ => state.interrupt(),
},
});
Ok(())
}
#[cfg(not(target_os = "linux"))]
fn main() {
println!("NVML only supports events on linux :(");
}