Microsoft ti ṣe idasilẹ ile-ikawe Rust osise fun Windows API

Ile-ikawe naa jẹ apẹrẹ bi apoti ipata labẹ Iwe-aṣẹ MIT, eyiti o le ṣee lo bii eyi:

[awọn igbẹkẹle] windows = "0.2.1"

[awọn igbẹkẹle-ile] windows = "0.2.1"

Lẹhin eyi, ninu iwe afọwọkọ kọ build.rs, o le ṣe agbekalẹ awọn modulu ti o nilo fun ohun elo rẹ:

fn akọkọ() {
windows:: kọ!
windows::data::xml::dom::*
windows :: win32 :: awọn iṣẹ_eto :: {CreateEventW, SetEvent, WaitForSingleObject}
windows :: win32 :: windows_programming :: CloseHandle
);
}

Awọn iwe nipa awọn modulu ti o wa ni a gbejade lori awọn iwe aṣẹ.rs.

Koodu apẹẹrẹ:

awọn ọna asopọ mod {
:: windows :: pẹlu_bindings! ();
}

lo awọn abuda::{
windows::data::xml::dom::*,
windows :: win32 :: awọn iṣẹ_eto :: {CreateEventW, SetEvent, WaitForSingleObject},
windows :: win32 :: windows_programming :: CloseHandle ,
};

fn akọkọ () -> windows:: Abajade<()> {
jẹ ki doc = XmlDocument :: titun () ?;
doc.load_xml(" Mo ki O Ile Aiye ")?;

jẹ ki root = doc.document_element () ?;
sọ! (root.node_name ()? == "html");
assert!(root.inner_text()? == "hello aye");

ko lewu {
jẹ ki iṣẹlẹ = CreateEventW(
std :: ptr :: null_mut (),
ooto.sinu(),
iro.sinu(),
std :: ptr :: asan (),
);

SetEvent (iṣẹlẹ).ok ()?;
WaitForSingleObject (iṣẹlẹ, 0);
CloseHandle (iṣẹlẹ).ok ()?;
}

O dara(())
}

Diẹ ninu awọn ipe iṣẹ lo ailewu nitori awọn iṣẹ wọnyi ti pese bi o ti ri, laisi mu wọn mu ara wọn badọgba si awọn apejọ Rust. Crate ti a ṣe lori kanna opo. libc, eyiti o ṣe iranṣẹ bi apoti ipilẹ fun iwọle si libc ati pe a lo bi ipilẹ fun kikọ awọn ile-ikawe pẹlu wiwo to ni aabo.


A ṣẹda iṣẹ akanṣe laarin ilana Win32 Metadata Project, eyiti a ṣe lati jẹ ki o rọrun lati ṣẹda awọn API fun awọn ede siseto oriṣiriṣi. Ile-ikawe keji, eyiti o da lori Ise agbese Metadata ni ipele akọkọ ti iṣẹ akanṣe - C #/Win32. Microsoft tun kede ibẹrẹ iṣẹ lori version fun C ++, tí ń lo ọ̀nà ìgbàlódé ti èdè.

orisun: linux.org.ru