Cross-platform application development would be nothing without bindings to the native platform/system APIs.

The crates in this category expose those, and are often useful either when developing new feature abstractions, or to allow you to drop down into "lower-level" details of the platform.

Bindings to allow writing Wayland or X11 clients on Linux or other free unixes

X11


  • Rust bindings to X11
    x11 xcb
  • Bindings to the standard C implementation of the wayland protocol, client side.
    client wayland
  • Toolkit for making client wayland applications.
    client wayland
  • BlueR: official Rust interface to the Linux Bluetooth protocol stack (BlueZ)
    bluetooth gatt l2cap mesh rfcomm
  • API for D-Bus communication
    d-bus dbus ipc
  • blessed
    Microsoft official Rust bindings to the Windows API
  • Windows API and GUI in safe, idiomatic Rust.
    com ffi gui win32 windows

Web


  • blessed
    Bindings for all Web APIs, a procedurally generated crate from WebIDL
  • Batteries included embedded USB HID library for usb-device. Includes concrete Keyboard (boot and NKRO), Mouse, Joystick and Consumer Control implementations as well as support for building your own HID classes.
    hid keyboard mouse usb usb-device
  • LVGL bindings for Rust. A powerful and easy-to-use embedded GUI with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash).
    graphical_interfaces littlevgl lvgl

Bindings for macOS, iOS, tvOS, watchOS and visionOS APIs

  • blessed
    Bindings to Apple frameworks
    ios macos objc objc_msgsend objective-c
  • Rust bindings to Core Foundation and other low level libraries on macOS and iOS
    framework macos objc
  • Safe Rust bindings for AppKit (macOS) and UIKit (iOS/tvOS)
    appkit gui ios macos uikit
  • Glue for building Rust applications on Android with NativeActivity or GameActivity
    android ndk
  • Safe Rust bindings to the Android NDK
    android ndk
  • Rust access to Android state (native Java objects) managed by UI toolkits
    android environment java jni robius