#usb #bindings #libusb #hardware

sys libusb-src

libusb的FFI绑定。可以轻松地进行交叉编译。

2个稳定版本

1.27.0+1.0.26 2023年10月9日
1.26.2 2023年8月4日
1.26.1 2023年7月31日
1.0.26 2023年7月31日

#1893硬件支持

Download history 1/week @ 2024-05-14 16/week @ 2024-05-21 1/week @ 2024-05-28 1/week @ 2024-06-04 1/week @ 2024-06-11 2/week @ 2024-06-18 1/week @ 2024-06-25

78 每月下载量
2 个Crates中使用了(通过 eusb

MIT 许可证

1MB
24K SLoC

C 16K SLoC // 0.3% comments Visual Studio Project 4.5K SLoC Rust 1K SLoC // 0.0% comments C++ 1K SLoC // 0.0% comments Visual Studio Solution 754 SLoC Automake 68 SLoC // 0.0% comments

Libusb Rust 绑定

libusb-src 包提供对 libusb C库的声明和链接。

libusb版本:1.0.26

在ubuntu和windows上测试过

示例

use libusb_src as ffi;

fn main(){
    unsafe {
        let mut context = std::mem::MaybeUninit::<*mut ffi::libusb_context>::uninit();
        match ffi::libusb_init(context.as_mut_ptr()){
            0 => (),
            err => panic!("Failed to init libusb {}", err),
        }
        let mut list = std::mem::MaybeUninit::<*const *mut ffi::libusb_device>::uninit();
        let list_size = ffi::libusb_get_device_list(context.assume_init(), list.as_mut_ptr());
        if list_size < 0  {
            panic!("Failed to get device list {} {:p}", -list_size, list.assume_init());
        }else { 
            println!("Usb device count: {}", list_size);
        }
        ffi::libusb_free_device_list(list.assume_init(), 1);
        ffi::libusb_exit(context.assume_init());
    }
}

交叉编译

支持Windows、Linux和Android,未测试iOS和mac。

依赖项

~0–2MB
~40K SLoC