Mae Microsoft wedi rhyddhau'r llyfrgell Rust swyddogol ar gyfer yr API Windows

Mae'r llyfrgell wedi'i dylunio fel crât rhwd o dan y Drwydded MIT, y gellir ei defnyddio fel hyn:

[dibyniaethau] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Ar ôl hyn, yn y sgript adeiladu build.rs, gallwch chi gynhyrchu'r modiwlau sydd eu hangen ar gyfer eich cais:

fn prif () {
ffenestri::adeiladu!(
ffenestri :: data:: xml ::dom ::*
windows ::win32 ::system_services ::{CreateEventW, SetEvent, WaitForSingleObject}
ffenestri::win32::windows_programming::CloseHandle
);
}

Cyhoeddir dogfennaeth am y modiwlau sydd ar gael ar docs.rs.

Enghraifft o god:

rhwymiadau mod {
::ffenestri::cynnwys_rhwymiadau!();
}

defnyddio rhwymiadau ::{
ffenestri :: data:: xml ::dom ::*,
windows ::win32 ::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
ffenestri :: win32 :: ffenestri_rhaglennu :: CloseHandle,
};

fn prif() -> ffenestri::Canlyniad <()> {
gadewch doc = XmlDocument::newydd() ?;
doc.load_xml(" Helo Byd ")?;

gadewch root = doc.document_element() ?;
haeru!(root.node_name()? == "html");
haeru!(root.inner_text()? == "helo fyd");

anniogel {
let event = CreateEventW(
std::ptr::null_mut(),
gwir.i(),
ffug.i(),
std::ptr::null(),
);

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

Iawn(())
}

Mae rhai galwadau swyddogaeth yn anniogel oherwydd bod y swyddogaethau hyn yn cael eu darparu fel y mae, heb eu haddasu i gonfensiynau Rust. Mae crât wedi'i ddylunio ar yr un egwyddor. libc, sy'n gweithredu fel crât sylfaenol ar gyfer cyrchu libc ac a ddefnyddir fel sail ar gyfer adeiladu llyfrgelloedd gyda rhyngwyneb diogel.


Crëwyd y prosiect o fewn y fframwaith Prosiect Metadata Win32, sydd wedi'i gynllunio i'w gwneud hi'n haws creu APIs ar gyfer gwahanol ieithoedd rhaglennu. Yr ail lyfrgell, a grëwyd yn seiliedig ar y Prosiect Metadata yng ngham cyntaf y prosiect - C#/Win32. Cyhoeddodd Microsoft hefyd ddechrau'r gwaith ar fersiwn ar gyfer C++, sy'n defnyddio arddull iaith fodern.

Ffynhonnell: linux.org.ru