You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
windows-rs lets you call Windows APIs - past, present, and future - directly from Rust. It is not
a single crate but a family of them, from low-level API access to high-level declarative UI. This
page helps you find the right crate for the job; each crate's own documentation then covers how to
use it, with examples.
Most of these crates are small and focused - string types, error handling, the registry,
collections, and so on - and you depend only on what you actually use. For broad, exploratory access
to the entire Windows API surface, the windows and
windows-sys crates project everything past, present, and future, gated
behind per-namespace features.
For most projects, prefer the focused crates below, and generate a minimal, project-specific binding
with windows-bindgen for any additional APIs you need.
Choosing your crates
Start with what you are trying to do and add the smallest crate that covers it. Follow the link for
usage and examples.
The full categorized index follows. Each crate has one page under crates/ covering both
usage and internals - how the crate is built and maintained (the tool_bindings / tool_reactor /
tool_package codegen pipeline, generated files, and conventions). Each crate's own readme.md is
the user-facing introduction with a quick example, and the per-crate page links to it. Item-level
API reference is the generated rustdoc on docs.rs, linked from every page.
The #[interface] and #[implement] macros are part of windows-core, split into the
windows-interface and
windows-implement crates only because Rust requires procedural macros
to live in a dedicated proc-macro crate.
These crates package functionality that is part of other crates but must ship separately.
windows-interface and windows-implement are part of windows-core (see
above); Rust requires their proc macros to live in a dedicated proc-macro crate.
These crates project the entire Windows API surface. For new projects, prefer a focused binding
generated with windows-bindgen, or compose the smaller crates above.
Zero-overhead raw bindings for C-style Windows APIs.
Building & maintenance
Dependencies - every external SDK, header set, metadata file, and runtime the
build and tooling depend on: what version is used, where it is set, how it is obtained, and how to
update it.