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