cue-sdk 0.0.1

A high-level safe wrapper on top of cue-sdk-sys, for interfacing with the iCUE SDK.
Documentation
# cue-sdk

A high level rust wrapper for the native [iCUE SDK](https://github.com/CorsairOfficial/cue-sdk).

If you are looking for low-level (and unsafe) access, check out the parent crate 
for this repository [cue-sdk-sys](https://github.com/scottroemeschke/cue-sdk-sys).

 # Quick Start

 Make sure you set the required environment variables for the [cue-sdk-sys](https://crates.io/crates/cue-sdk-sys)
 dependency crate.

 If you need the binaries, the easiest place to get them is on the [Github Releases Page](https://github.com/CorsairOfficial/cue-sdk).
 Since we can't build them from scratch (not open source) you have to get them yourself.

 This version of the crate is built against version [3.0.55](https://github.com/CorsairOfficial/cue-sdk/releases/tag/v3.0.355)
 of the iCUE SDK.

 # Example Code

 ```rust
 use cue_sdk::led::LedColor;
 use cue_sdk::initialize;
 let sdk = initialize()
     .expect("failed to initialize sdk");
 let mut  devices = sdk.get_all_devices().expect("failed to get all devices");
 let new_color = LedColor { red: 200, green: 20, blue: 165 };
 for d in &mut devices {
     //print some info
     println!("Device: {:?} at index {:?} has led count: ${:?}",
         d.device_info.model, d.device_index, d.leds.len());

     // set the first led in every device to our `new_color` color
     d.leds.first_mut().unwrap().update_color_buffer(new_color);
 }
 //flush the colors buffer (send to device hardware)
 sdk.flush_led_colors_update_buffer_sync()
     .expect("failed to flush led buffer");
 ```

 You can note from the following example, most "write" operations can fail
 for a variety of reasons including but not limited to:

 - device state changes (devices have been unplugged/plugged in)
 - ffi interfacing (pointer derefs, etc) fail due to undocumented breaking changes in the iCUE SDK,
 or a bug in the crate code
 - another client has requested exclusive access

 # Examples

 For additional examples see the [example code]https://github.com/scottroemeschke/cue-sdk-rust
 and run examples with `cargo run --example {example_name}`.