مائیکروسافٹ نے ونڈوز API کے لیے آفیشل رسٹ لائبریری جاری کی ہے۔

لائبریری کو MIT لائسنس کے تحت ایک رسٹ کریٹ کے طور پر ڈیزائن کیا گیا ہے، جسے اس طرح استعمال کیا جا سکتا ہے:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

اس کے بعد، build.rs اسکرپٹ میں، آپ وہ ماڈیول تیار کر سکتے ہیں جو آپ کی درخواست کے لیے درکار ہیں:

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

دستیاب ماڈیولز کے بارے میں دستاویزات شائع کی گئی ہیں۔ docs.rs.

نمونہ کوڈ:

موڈ بائنڈنگز {
::windows::include_bindings!();
}

پابندیاں استعمال کریں::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}،
windows::win32::windows_programming::CloseHandle،
};

fn main() -> windows::Result<()> {
let doc = XmlDocument::new()؟
doc.load_xml(" ہیلو دنیا ")؟

let root = doc.document_element()؟
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "ہیلو ورلڈ")؛

غیر محفوظ {
لیٹ ایونٹ = CreateEventW(
std::ptr::null_mut()،
true.into()
false.into()
std::ptr::null(),
);

SetEvent(event).ok()؟
WaitForSingleObject(واقعہ، 0)؛
CloseHandle(event).ok()؟;
}

ٹھیک ہے(())
}

کچھ فنکشن کالز غیر محفوظ استعمال کرتی ہیں کیونکہ یہ فنکشنز کو رسٹ کنونشنز کے مطابق ڈھالنے کے بغیر فراہم کیے جاتے ہیں۔ کریٹ اسی اصول پر ڈیزائن کیا گیا ہے۔ libc، جو libc تک رسائی کے لیے ایک بنیادی کریٹ کے طور پر کام کرتا ہے اور ایک محفوظ انٹرفیس کے ساتھ لائبریریوں کی تعمیر کے لیے ایک بنیاد کے طور پر استعمال ہوتا ہے۔


منصوبے کے اندر اندر بنایا گیا تھا Win32 میٹا ڈیٹا پروجیکٹ، جسے مختلف پروگرامنگ زبانوں کے لیے APIs بنانا آسان بنانے کے لیے ڈیزائن کیا گیا ہے۔ دوسری لائبریری، جو پروجیکٹ کے پہلے مرحلے میں میٹا ڈیٹا پروجیکٹ کی بنیاد پر بنائی گئی تھی۔ C#/Win32. مائیکروسافٹ نے بھی کام شروع کرنے کا اعلان کیا۔ C++ کے لیے ورژنجو کہ جدید طرز کی زبان استعمال کرتا ہے۔

ماخذ: linux.org.ru