A Microsoft lançou a biblioteca oficial Rust para a API do Windows

A biblioteca foi projetada como uma caixa Rust sob a licença MIT, que pode ser usada assim:

[dependências] janelas = "0.2.1"

[dependências de construção] windows = "0.2.1"

Depois disso, no script de construção build.rs, você pode gerar os módulos necessários para sua aplicação:

fn principal() {
janelas::construir!(
windows::dados::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

A documentação sobre os módulos disponíveis está publicada em documentos.rs.

Exemplo de código:

ligações de mod {
::windows::include_bindings!();
}

usar ligações::{
windows::dados::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
deixe doc = XmlDocument::new()?;
doc.load_xml(" Olá Mundo ")?;

deixe root = doc.document_element()?;
afirmar!(root.node_name()? == "html");
afirmar!(root.inner_text()? == "olá mundo");

inseguro {
deixe evento = CreateEventW(
std::ptr::null_mut(),
verdadeiro.into(),
falso.into(),
std::ptr::null(),
);

SetEvent(evento).ok()?;
WaitForSingleObject(evento, 0);
CloseHandle(evento).ok()?;
}

OK(())
}

Algumas chamadas de função são inseguras porque essas funções são fornecidas como estão, sem adaptá-las às convenções do Rust. A caixa é projetada com base no mesmo princípio. libc, que serve como caixa básica para acessar a libc e é usada como base para construir bibliotecas com uma interface segura.


O projeto foi criado no âmbito Projeto de metadados Win32, que foi projetado para facilitar a criação de APIs para diferentes linguagens de programação. A segunda biblioteca, que foi criada com base no Projeto Metadados na primeira fase do projeto - C # / Win32. A Microsoft também anunciou o início dos trabalhos em versão para C++, que usa um estilo moderno de linguagem.

Fonte: linux.org.ru