Wahl zwischen den Crate-Bibliotheken windows und windows-sys
Die windows-Crate bietet Bindungen für die Windows-API, einschließlich C-Style-APIs wie CreateThreadpool sowie COM- und WinRT-APIs wie DirectX. Diese Crate bietet die umfassendste API-Abdeckung für das Windows-Betriebssystem. Wo immer möglich, versucht die windows-Crate auch, ein idiomatischeres und sichereres Programmiermodell für Rust-Entwickler bereitzustellen.
Die windows-sys-Crate bietet reine Bindungen für die Windows-APIs im C-Stil. Sie unterstützt keine COM- und WinRT-APIs. Die windows-sys-Crate entstand aus der Erkenntnis, dass der teuerste Aspekt der windows-Crate in Bezug auf die Build-Zeit die Kosten für die Kompilierung von Funktionskörpern sind. Der Rust-Compiler verbringt viel Aufwand mit der Kompilierung von Funktionskörpern, sodass eine Version der windows-Crate, die nur Deklarationen enthält, im Vergleich dazu sowohl viel kleiner als auch schneller ist. Das Problem ist, dass COM-Style-virtuelle Funktionsaufrufe in Rust (im Gegensatz zu C++) zusätzlichen Codegenerierungscode erfordern, was wiederum zu langsameren Kompilierungszeiten führt. Hier kommt die windows-sys-Crate ins Spiel.
Natürlich arbeiten wir weiterhin hart daran, die Leistung sowohl in Bezug auf die zugrunde liegende Rust-Compiler-Toolchain als auch auf die Effizienz des für diese Crate-Bibliotheken generierten Codes zu verbessern. Wir sind daher zuversichtlich, dass die Kompilierzeit weiterhin verbessert wird.
| Was benötigen Sie? | windows | windows-sys |
|---|---|---|
| Schnelle Kompilierzeiten sind eine Ihrer obersten Prioritäten | ✅ | |
Sie benötigen no_std-Unterstützung | ✅ | |
| Sie benötigen COM- oder WinRT-Unterstützung | ✅ | |
| Sie würden es vorziehen, APIs zu verwenden, die sich für Rust idiomatisch anfühlen | ✅ | |
| Mindestens unterstützte Rust-Version | 1.56 | 1.56 |