速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Rust/WinRT 预览版发布,微软在 Rust 大道上又进了一步

  • 2020-05-26
  • 本文字数:1014 字

    阅读完需:约 3 分钟

Rust/WinRT预览版发布,微软在Rust大道上又进了一步

Rust/WinRT是 Windows 运行时的一种语言映射,现在发布了预览版,可以通过自然惯用的方式来调用 Windows API,类似于C++/WinRT等其他语言映射。


借助 Rust/WinRT,你可以直接使用由 API 元数据生成的动态代码来调用 WinRT API,不管是过去的、现在的还是未来的,并可以直接调用 Rust 包,就好像调用另一个 Rust 模块一样。


微软首席软件工程师 Kenny Kerr 解释说,Rust 开发人员可以使用 Rust/WinRT 开发 Windows 应用程序和组件,以及 NT 服务或 Windows 驱动程序。下面演示了如何使用 XmlDocument 类来解析 XML 文档:


use windows::data::xml::dom::*;let doc = XmlDocument::new()?;doc.load_xml("<html>hello world</html>")?;let root = doc.document_element()?;assert!(root.node_name()? == "html");assert!(root.inner_text()? == "hello world");
复制代码


微软努力让 Rust/WinRT 代码尽可能看起来接近惯用的 Rust 代码,比如,蛇形命名到驼峰命名的自动转换、对 Rust null 合并操作符?的支持、简化错误传递,等等。


根据 InfoQ 之前的报道,一段时间以来,微软一直在探索将 Rust 作为开发安全软件的解决方案。微软工程师 Ryan Levick 和 Sebastian Fernandez 在上一界巴塞罗那 RustFest 大会上解释说,微软期望 Rust 能够让高性能关键组件的开发变得更安全,尽管 Rust 社区仍然需要克服很多困难才能让 Rust 及其工具链为 Windows 提供一等支持。


这个新项目似乎证实了微软对待在开发中使用 Rust 这件事是认真的:


长期以来,微软一直将 C++作为开发的基础,但也面临着一些挑战,尤其是在安全方面。Rust 是一种有趣的编程语言,它在很多方面与 C++非常相似,在编译、运行时模型、类型系统和确定性终止机制方面都做得很好。它有自己独特的学习曲线,不过它可以解决困扰 C++项目的一些最令人头疼的问题,而且它的设计从一开始就是以内存安全和安全并发作为核心原则。


要在项目中使用 Rust/WinRT,可以在 Cargo.toml 文件添加依赖:


[dependencies]winrt = { git = "https://github.com/microsoft/winrt-rs" }
复制代码


这样就可以导入任意 Windows 模块:


use winrt::*;import!(    dependencies        os    modules        "windows.data.xml.dom"        "windows.foundation"        "windows.ui");
复制代码


Rust/WinRT 现在只提供了早期预览版,虽然已经足够成熟了。Robert Mikhayelyan 的Rust扫雷游戏提供了非常好的示例。


原文链接


Rust/WinRT Brings Microsoft Closer to Adopting Rust Internally


2020-05-26 10:132453

评论

发布
暂无评论
发现更多内容

对于数据,科技小白提出了灵魂三问:从哪儿来?到哪儿去?能干什么?

华为云开发者联盟

人工智能 安全 数据 数据采集 网络人工智能

牛比特小矿工系统开发|牛比特小矿工软件APP开发

系统开发

情指勤一体化指挥调度平台建设,重点人员管理平台

3d导航栏

赫鲁小夫

4月日更

“区块链+”,应用积分营销

电微13828808271

区块链

7 个非常实用的 Shell 拿来就用脚本实例!

JackTian

Linux 编程 Shell 脚本语言 运维工程师

BBK智能合约系统开发|BBK智能合约APP软件开发

系统开发

教你一个著名的流行数据格式:Python JSON

华为云开发者联盟

Python 数据 Python JSON JSON序列化 半结构化数据

模块一:课后作业

sN0wpeak

架构实战营

平面设计之PS(前序)

空城机

PhotoShop ps 4月日更

有了这个框架,平台开发谁还手敲代码?

华为云开发者联盟

华为云 智慧园区 MainPortal 统一门户 HDC2021

超低功耗LoRa无线通信应用实践

不脱发的程序猿

物联网 无线通信 4月日更 LoRa 无线通信模组

CSS实现动画环绕下划线效果

Sakura

4月日更

架构训练营

架构训练营

拍乐云 x 扬帆出海 x LiveCloud:音视频出海专家干货分享

拍乐云Pano

flutter ios android WebRTC RTC

架构实战营模块 1 作业

Geek_2b52aa

架构实战营

假期后来一波干货:一文理清JVM和GC

比伯

Java 程序员 架构 JVM 计算机

你在备战“字节”时一定需要这个,程序员进大厂指南+算法已开源

Java架构师迁哥

手起刀落,连斩获阿里(四面)+字节(四面)+美团(三面)三家一线大厂Offer!

Java架构追梦

Java 架构 面试

Spring Boot + RabbitMQ实现订单过期自动取消功能

Lonely Sufferer

RabbitMQ springboot

【Java 试题】AQS解析

程序员架构进阶

AQS Java源码 28天写作 4月日更

书单|互联网企业面试案头书之运营篇

博文视点Broadview

这6个浏览器插件,让你的浏览器大为不同。

彭宏豪95

chrome 浏览器 插件 chrome扩展 4月日更

“区块链+版权”应用保护者

电微13828808271

面试笔记(二)线程池连环炮

U2647

Thread 4月日更

人生苦短,我用Python之小游戏

Bob

开发者 Python 游戏编程 4月日更 -python

Rust从0到1-结构体-定义和实例化

rust struct 结构体

架构实战营第一次作业

CmHuang

架构实战营

「架构实战营」模块一作业

between

架构实战营

企业为何开始选择使用成品训练数据集?

澳鹏Appen

人工智能 机器学习 大数据 数据集 数据流

架构实战营-模块1-微信业务架构-学生系统架构备选方案

吴建中

Rust/WinRT预览版发布,微软在Rust大道上又进了一步_编程语言_Sergio De Simone_InfoQ精选文章