تصدر Microsoft مكتبة Rust الرسمية لـ Windows API

تم تنسيق المكتبة على هيئة صندوق Rust بموجب ترخيص MIT ، والذي يمكن استخدامه على النحو التالي:

[التبعيات] windows = "0.2.1"

نوافذ [تبعيات البناء] = "0.2.1"

بعد ذلك ، في البرنامج النصي build.rs build ، يمكنك إنشاء الوحدات اللازمة لتطبيقك:

fn main () {
نوافذ :: بناء! (
الويندوز :: البيانات :: 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 :: النتيجة <()> {
اسمحوا doc = XmlDocument :: new () ؟؛
doc.load_xml (" مرحبا بالعالم ")؟

دع الجذر = doc.document_element () ؟؛
تأكيد! (root.node_name ()؟ == "html") ؛
تأكيد! (root.inner_text ()؟ == "hello world")؛

غير آمن {
اسمحوا الحدث = CreateEventW (
الأمراض المنقولة جنسياً :: ptr :: null_mut () ،
true.into () ،
false.into () ،
الأمراض المنقولة جنسياً :: ptr :: null () ،
);

SetEvent (حدث) .ok () ؟؛
WaitForSingleObject (حدث ، 0) ،
CloseHandle (حدث) .ok () ؟؛
}

نعم(())
}

بالنسبة لبعض استدعاءات الوظائف ، يتم استخدام غير آمن ، حيث يتم توفير هذه الوظائف كما هي ، دون تكييفها مع اصطلاحات Rust. يتم ترتيب الصندوق وفقًا لنفس المبدأ LIBC، والذي يعد بمثابة الصندوق الأساسي للوصول إلى libc ويستخدم كأساس لبناء مكتبات بواجهة آمنة.


تم إنشاء المشروع في إطار العمل مشروع بيانات تعريف Win32، والتي تم تصميمها لتسهيل إنشاء واجهات برمجة التطبيقات للغات البرمجة المختلفة. المكتبة الثانية التي تم إنشاؤها بناءً على مشروع البيانات الوصفية في المرحلة الأولى من المشروع هي C # / Win32. أعلنت Microsoft أيضًا عن بدء العمل في نسخة لـ C ++الذي يستخدم الأسلوب الحديث للغة.

المصدر: linux.org.ru