Microsoft telah merilis perpustakaan Rust resmi untuk Windows API

Perpustakaan dirancang sebagai peti Rust di bawah Lisensi MIT, yang dapat digunakan seperti ini:

[ketergantungan] windows = "0.2.1"

[build-dependensi] windows = "0.2.1"

Setelah ini, dalam skrip build build.rs, Anda dapat membuat modul yang diperlukan untuk aplikasi Anda:

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

Dokumentasi tentang modul yang tersedia dipublikasikan di dokumen.rs.

Π΅Ρ€ ΠΎΠ΄Π°:

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

gunakan pengikatan::{
jendela::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Hasil<()> {
biarkan doc = XmlDocument::new()?;
dok.load_xml(" Halo Dunia ")?;

biarkan root = doc.document_element()?;
menegaskan!(root.node_name()? == "html");
menegaskan!(root.inner_text()? == "halo dunia");

tidak aman {
biarkan acara = BuatEventW(
std::ptr::null_mut(),
benar.ke(),
salah.ke dalam(),
std::ptr::null(),
);

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

Oke(())
}

Beberapa pemanggilan fungsi menggunakan unsafe karena fungsi ini disediakan apa adanya, tanpa menyesuaikannya dengan konvensi Rust. Peti dirancang dengan prinsip yang sama. libc, yang berfungsi sebagai wadah dasar untuk mengakses libc dan digunakan sebagai dasar untuk membangun perpustakaan dengan antarmuka yang aman.


Proyek ini dibuat dalam kerangka tersebut Proyek Metadata Win32, yang dirancang untuk memudahkan pembuatan API untuk berbagai bahasa pemrograman. Perpustakaan kedua, yang dibuat berdasarkan Proyek Metadata pada tahap pertama proyek - C#/Menang32. Microsoft juga mengumumkan dimulainya pengerjaan versi untuk C++, yang menggunakan gaya bahasa modern.

Sumber: linux.org.ru