مایکروسافت کتابخانه رسمی Rust را برای API ویندوز منتشر کرد

این کتابخانه به عنوان یک جعبه Rust تحت مجوز MIT طراحی شده است که می توان از آن به صورت زیر استفاده کرد:

[وابستگی] ویندوز = "0.2.1"

[build-dependencies] windows = "0.2.1"

پس از این، در اسکریپت ساخت build.rs، می توانید ماژول های مورد نیاز برنامه خود را ایجاد کنید:

fn main() {
ویندوز::ساخت!(
ویندوز::داده::xml::dom::*
ویندوز::win32::system_services::{CreateEventW، SetEvent، WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

مستندات مربوط به ماژول های موجود در تاریخ منتشر شده است docs.rs.

کد مثال:

mod bindings {
::windows::include_bindings!();
}

استفاده از bindings::{
ویندوز::داده::xml::dom::*،
windows::win32::system_services::{CreateEventW، SetEvent، WaitForSingleObject}،
windows::win32::windows_programming::CloseHandle،
};

fn main() -> ویندوز::نتیجه<()> {
اجازه دهید doc = XmlDocument::new()؟;
doc.load_xml(" سلام دنیا ")؟

اجازه دهید root = doc.document_element()؟;
assert!(root.node_name()؟ == "html");
ادعا!(root.inner_text()؟ == "سلام دنیا");

ناامن {
let event = CreateEventW(
std::ptr::null_mut()،
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(event).ok()?;
WaitForSingleObject(رویداد، 0)؛
CloseHandle(رویداد).ok()؟;
}

خوب(())
}

برخی از فراخوانی‌های تابع از غیرایمن استفاده می‌کنند، زیرا این توابع به همان شکلی که هستند، بدون تطبیق آنها با قراردادهای Rust ارائه می‌شوند. جعبه بر اساس همان اصل طراحی شده است. libc، که به عنوان یک جعبه اولیه برای دسترسی به libc عمل می کند و به عنوان پایه ای برای ساخت کتابخانه هایی با یک رابط امن استفاده می شود.


این پروژه در چارچوب ایجاد شد پروژه ابرداده Win32، که برای ایجاد سهولت در ایجاد API برای زبان های برنامه نویسی مختلف طراحی شده است. دومین کتابخانه که بر اساس پروژه فراداده در فاز اول پروژه ایجاد شد - C#/Win32. مایکروسافت نیز از آغاز کار بر روی آن خبر داد نسخه برای C++، که از سبک مدرن زبان استفاده می کند.

منبع: linux.org.ru