Microsoft Windows API üçün rəsmi Rust kitabxanasını buraxdı

Kitabxana MIT Lisenziyası altında Rust qutusu kimi hazırlanmışdır və bu kimi istifadə edilə bilər:

[asılılıqlar] pəncərələr = "0.2.1"

[qurmaqdan asılılıqlar] pəncərələr = "0.2.1"

Bundan sonra build.rs build skriptində tətbiqiniz üçün lazım olan modulları yarada bilərsiniz:

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

Mövcud modullar haqqında sənədlər dərc olunur docs.rs.

Nümunə kodu:

mod bağlamaları {
::windows::include_bindings!();
}

bağlamalardan istifadə edin::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Nəticə {
let doc = XmlDocument::new()?;
doc.load_xml("salam dünya")?;

let root = doc.document_element()?;
təsdiq edin!(root.node_name()? == "html");
assert!(root.inner_text()? == "salam dünya");

təhlükəli {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Tamam(())
}

Bəzi funksiya çağırışları təhlükəli istifadə edir, çünki bu funksiyalar Rust konvensiyalarına uyğunlaşdırılmadan olduğu kimi təmin edilir. Sandıq eyni prinsip əsasında hazırlanmışdır. libclibc-ə daxil olmaq üçün əsas qutu kimi xidmət edir və təhlükəsiz interfeysli kitabxanaların qurulması üçün əsas kimi istifadə olunur.


Layihə çərçivəsində yaradılıb Win32 Metadata Layihəsi, müxtəlif proqramlaşdırma dilləri üçün API yaratmağı asanlaşdırmaq üçün nəzərdə tutulmuşdur. Layihənin birinci mərhələsində Metadata Layihəsi əsasında yaradılmış ikinci kitabxana - C#/Win32. Microsoft da işlərə başladığını açıqladı C++ üçün versiyamüasir dil üslubundan istifadə edən .

Mənbə: linux.org.ru