Microsoft anunció Rust para Windows, que tiene como objetivo permitir la creación de aplicaciones Rust para Windows utilizando cualquier API de Windows.
Rust para Windows tiene como objetivo poner a disposición las API más antiguas y más recientes aprovechando el proyecto win32metadata para crear proyecciones idiomáticas de la API de Windows para lenguajes distintos de C# y F#.
Este framework puede generar enlaces a todas las API de Windows necesarias sobre la marcha. Lo que debemos hacer es especificar qué tipos de API necesitamos dentro de un archivo build.rs:
fn main() {
windows::build!(Windows::Data::Xml::Dom::*,
Windows::Win32::WindowsProgramming::CloseHandle,
Windows::Win32::WindowsAndMessaging::MessageBoxA,
Windows::Win32::SystemServices::{
CreateEventW, SetEvent, WaitForSingleObject
},
);
}
Los enlaces generados se pueden importar y usar en los archivos fuente de Rust:
use bindings::{
Windows::Data::Xml::Dom::*,
Windows::Win32::SystemServices::{CreateEventW, SetEvent, WaitForSingleObject, PWSTR},
Windows::Win32::WindowsAndMessaging::{MessageBoxA, HWND, MESSAGEBOX_STYLE},
Windows::Win32::WindowsProgramming::CloseHandle,
};
Microsoft ha proporcionado varios programas de muestra que utilizan varias API de Windows, incluidos Direct2D, Microsoft.Web.WebView2.Core, Win2D y otros.
Win32metadata no solo permite proyecciones automatizadas de API de Windows, sino que también se esfuerza por facilitar su uso al convertir tipos no específicos como uint en enumeraciones específicas, tipos opacos como objetos HANDLE y GDI en estructuras fuertemente tipadas, etc.
La documentación de Rust para todas las API proyectadas también está disponible para describir cómo se proyectan las API y los tipos de Windows en Rust idiomático.
Rust para Windows todavía está en versión preliminar y el proyecto agradece las contribuciones para identificar y corregir errores en el código fuente.
Dejo video :
Dejo link: https://docs.microsoft.com/en-us/windows/dev-environment/rust/rust-for-windows