Microsoft, Windows API için resmi Rust kitaplığını yayımladı

Kütüphane, MIT Lisansı altında, şu şekilde kullanılabilen bir Rust sandığı olarak tasarlanmıştır:

[bağımlılıklar] pencereler = "0.2.1"

[yapı bağımlılıkları] pencereler = "0.2.1"

Bundan sonra build.rs build betiğinde uygulamanız için gerekli olan modülleri oluşturabilirsiniz:

fn ana() {
pencereler::oluştur!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

Mevcut modüllere ilişkin belgeler şu adreste yayınlanmıştır: dokümanlar.rs.

Örnek кода:

mod bağlamaları {
::windows::include_bindings!();
}

bağlamaları kullan::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Sonuç<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" Selam Dünya ")?;

izin ver kök = doc.document_element()?;
iddia!(root.node_name()? == "html");
iddia!(root.inner_text()? == "merhaba dünya");

güvensiz {
let olayı = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Tamam(())
}

Bazı işlev çağrıları güvensizdir çünkü bu işlevler Rust kurallarına uyarlanmadan olduğu gibi sağlanır. Sandık aynı prensipte tasarlanmıştır. libclibc'ye erişim için temel bir kasa görevi gören ve güvenli bir arayüze sahip kütüphaneler oluşturmak için temel olarak kullanılan .


Proje çerçevesinde oluşturuldu Win32 Meta Veri ProjesiFarklı programlama dilleri için API'ler oluşturmayı kolaylaştırmak amacıyla tasarlanmıştır. Projenin ilk etabında Metadata Projesi esas alınarak oluşturulan ikinci kütüphane - C#/Win32. Microsoft ayrıca çalışmalara başladığını da duyurdu. C++ sürümü, modern bir dil tarzı kullanıyor.

Kaynak: linux.org.ru