Η Microsoft κυκλοφόρησε την επίσημη βιβλιοθήκη Rust για το API των Windows

Η βιβλιοθήκη έχει σχεδιαστεί ως κιβώτιο Rust υπό την άδεια MIT, το οποίο μπορεί να χρησιμοποιηθεί ως εξής:

[εξαρτήσεις] windows = "0.2.1"

[κατασκευή-εξαρτήσεις] 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.

Παράδειγμα κώδικα:

mod bindings {
::παράθυρα::include_bindings!();
}

χρησιμοποιήστε δεσίματα::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Αποτέλεσμα {
let doc = XmlDocument::new();
doc.load_xml("γεια στον κόσμο");

έστω root = doc.document_element();
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "γεια σου κόσμε");

μη ασφαλές {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(event).ok()?;
WaitForSingleObject(συμβάν, 0);
CloseHandle(event).ok();;
}

Εντάξει(())
}

Ορισμένες κλήσεις συναρτήσεων χρησιμοποιούνται μη ασφαλείς, επειδή αυτές οι λειτουργίες παρέχονται ως έχουν, χωρίς να τις προσαρμόζουν στις συμβάσεις Rust. Το κιβώτιο σχεδιάζεται με την ίδια αρχή. libc, το οποίο χρησιμεύει ως βασικό κλουβί για την πρόσβαση στο libc και χρησιμοποιείται ως βάση για τη δημιουργία βιβλιοθηκών με ασφαλή διεπαφή.


Το έργο δημιουργήθηκε στο πλαίσιο Win32 Metadata Project, το οποίο έχει σχεδιαστεί για να διευκολύνει τη δημιουργία API για διαφορετικές γλώσσες προγραμματισμού. Η δεύτερη βιβλιοθήκη, η οποία δημιουργήθηκε με βάση το Metadata Project στην πρώτη φάση του έργου - C#/Win32. Η Microsoft ανακοίνωσε επίσης την έναρξη των εργασιών έκδοση για C++, το οποίο χρησιμοποιεί ένα σύγχρονο στυλ γλώσσας.

Πηγή: linux.org.ru