windows-rs README

The project's README from github.com/microsoft/windows-rs. As one markdown file: README.md.

windows-rs provides Rust crates for Windows APIs, from COM support and system services to UI and raw bindings.

Prefer the focused crates below when they cover the functionality you need. For additional APIs, windows-bindgen can generate a minimal project-specific binding, while windows and windows-sys provide broad API coverage behind feature flags for binary applications.

Reusable libraries should avoid the windows and windows-sys umbrella crates. They add dependency weight and version churn, and several libraries can bring incompatible versions of the same large crate into one dependency tree. Prefer the focused crates for shared Windows types and generate any remaining private bindings with windows-bindgen.

Each crate page covers usage and maintenance. Generated API documentation is available on docs.rs.

Crates

Core types and interop

Crate Description
windows-core COM and WinRT types, traits, and authoring macros.
windows-result Windows error handling and propagation.
windows-strings Windows string types, conversions, and macros.
windows-link Links C-style functions without import libraries.

Values and collections

Crate Description
windows-collections WinRT collections.
windows-numerics Graphics vectors and matrices.
windows-reference Implementation of WinRT IReference<T>.
windows-time WinRT DateTime and TimeSpan types.

Async and threading

Crate Description
windows-future WinRT asynchronous operations as Rust futures.
windows-threading Safe wrapper over the Win32 thread pool.

System services

Crate Description
windows-registry Safe Windows registry access.
windows-services Support for authoring Windows services.
windows-version Queries the Windows version at runtime.

UI and graphics

Crate Description
windows-reactor Declarative UI library backed by WinUI 3.
windows-canvas 2D graphics built on Direct2D.
windows-composition Windows composition visuals.
windows-webview Safe wrapper around the WebView2 browser control.
windows-window Window creation and message dispatch.
windows-pickers Windows file and folder pickers.
windows-animation Wrapper around the Windows Animation Manager.
windows-reactor-setup Stages the Windows App Runtime.

Code generation and metadata

Crate Description
windows-clang Generates RDL from C and C++ headers using libclang.
windows-default Embedded Windows metadata for build tools.
windows-metadata Reads and writes ECMA-335 metadata.
windows-rdl Parses RDL and generates ECMA-335 metadata.
cppwinrt Packages the C++/WinRT compiler.

Macro implementation

These crates implement macros exported by windows-core. Applications should use the windows-core exports rather than depend on them directly.

Crate Description
windows-implement Implements the #[implement] macro.
windows-interface Implements the #[interface] macro.

Windows API bindings

Use windows-bindgen when the focused crates above do not cover the APIs you need. Binary applications may instead prefer the convenience of the pre-generated windows or windows-sys umbrella crate.

Crate Description
windows-bindgen Generates Rust bindings from Windows metadata.
windows Typed bindings for C-style, COM, and WinRT APIs.
windows-sys Raw bindings for C-style Windows APIs.

windows-rs (microsoft/windows-rs)

Searching Database…

What is this?windows-rs is Microsoft's official collection of Rust crates that expose Windows APIs, from COM and WinRT support to system services and UI, letting Rust programs call into the Windows platform.
Is this one library or a whole set of crates?It is a workspace of many focused crates (windows-core, windows-registry, windows-webview, etc.) plus two umbrella crates, windows and windows-sys, that bundle broad API coverage behind feature flags.
How do I add it to a project?Add the specific focused crate you need (or the windows/windows-sys umbrella crate for a binary app) as a Cargo dependency; generated API docs are on docs.rs for each crate.
Do I need to generate my own bindings for missing APIs?Yes, if a focused crate doesn't cover the API you need, use windows-bindgen to generate a minimal project-specific binding from Windows metadata.
Why shouldn't libraries just depend on the windows or windows-sys crates?Reusable libraries should avoid the umbrella crates because they add dependency weight and version churn, and different libraries pulling in incompatible versions of the same large crate can conflict in one dependency tree.
Who should use the focused crates versus the umbrella crates?Library authors should prefer the focused crates for shared Windows types and generate private bindings as needed; binary applications can use the convenience of the umbrella windows or windows-sys crates.
Does this only work on Windows?Yes, these crates wrap native Windows APIs (COM, WinRT, Win32), so they target the Windows platform specifically.
What is windows-reactor?It is a declarative UI library backed by WinUI 3, part of the UI and graphics crate group.
Can I build native UI apps with this?Yes, crates like windows-reactor, windows-canvas, windows-composition, windows-webview and windows-window cover declarative UI, 2D graphics via Direct2D, composition visuals, an embedded WebView2 browser control, and window creation/message dispatch.
Is there support for calling C/C++ headers directly?Yes, windows-clang generates RDL metadata from C and C++ headers using libclang, which can then be turned into bindings.
What are similar projects?FreeRDP, iced, openai-python, RxJS, roslyn, pdfcraft, xi-editor, glfw
Creator
microsoft
Size
1.3 GB
Stars
12.8K
Age
7y
Commits · 90 Days