libusb 0.2.2

Rust library for accessing USB devices.
# Libusb
This crate provides a safe wrapper around the native `libusb` library. It applies the RAII pattern
and Rust lifetimes to ensure safe usage of all `libusb` functionality. The RAII pattern ensures that
all acquired resources are released when they're no longer needed, and Rust lifetimes ensure that
resources are released in a proper order.

* [Documentation]http://dcuddeback.github.io/libusb-rs/libusb/

## Dependencies
In order to use the `libusb` crate, you must have the native `libusb` library installed where it can
be found by `pkg-config`.

All systems supported by the native `libusb` library are also supported by the `libusb` crate. It's
been tested on Linux, OS X, and Windows.

### Cross-Compiling
The `libusb` crate can be used when cross-compiling to a foreign target. Details on how to
cross-compile `libusb` are explained in the [`libusb-sys` crate's
README](https://github.com/dcuddeback/libusb-sys#cross-compiling).

## Usage
Add `libusb` as a dependency in `Cargo.toml`:

```toml
[dependencies]
libusb = "0.2"
```

Import the `libusb` crate. The starting point for nearly all `libusb` functionality is to create a
context object. With a context object, you can list devices, read their descriptors, open them, and
communicate with their endpoints:

```rust
extern crate libusb;

fn main() {
    let mut context = libusb::Context::new().unwrap();

    for mut device in context.devices().unwrap().iter() {
        let device_desc = device.device_descriptor().unwrap();

        println!("Bus {:03} Device {:03} ID {:04x}:{:04x}",
            device.bus_number(),
            device.address(),
            device_desc.vendor_id(),
            device_desc.product_id());
    }
}
```

## Contributors
* [dcuddeback]https://github.com/dcuddeback
* [nibua-r]https://github.com/nibua-r

## License
Copyright © 2015 David Cuddeback

Distributed under the [MIT License](LICENSE).