写点什么

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:132473

评论

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

面试官:如何保证本地缓存的一致性?

王磊

Java 面试

软件测试/测试开发/全日制/测试管理丨Appium Inspector

测试人

软件测试

Parallels Desktop 17 安装Windows 11 教程 附激活工具

Rose

苹果电脑重装系统教程

Rose

数据采集在制造业中的应用场景

万界星空科技

数据采集 MES系统 设备管理 万界星空科技 生产管理

我想做一款软件产品,应该怎么做?

天津汇柏科技有限公司

创新创业 产品原型设计软件

KaiwuDB × 风电企业 | 高性能、低成本、释放数据价值

KaiwuDB

数据库 解决方案

“无法打开应用,因为Apple无法检查其是否包含恶意软件“解决方法

Rose

复杂经济时期下的企业财务规划战略

智达方通

全面预算 情景规划 企业财务规划 财务规划

喜讯!矩阵起源子公司通过“国家高新技术企业”认定,引领数据库行业科技创新!

MatrixOrigin

数据库 分布式 云原生 MatrixOrigin MatrixOne

使用Local Persistent Volume 部署有状态工作负载

华为云开发者联盟

Kubernetes 开发 华为云 华为云开发者联盟

苹果电脑应用程序无法打开提示不明开发者或文件损坏的处理方法

Rose

精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原理和开发指南(中)

洛神灬殇

Java 后端开发 JDK 动态代理 CGLIB 动态代理 2024年第十一篇文章

Prometheus配置Basic Auth进行安全防护,实现登录控制

华为云开发者联盟

开发 华为云 华为云开发者联盟

解决苹果无线鼠标、键盘或触控板无法被 Mac 识别的方法

Rose

苹果电脑Mac教程:如何开启任何来源选项

Rose

第三方 Cookie 被禁用?企业该如何实现用户精准运营和管理

Authing

Cookie Authing 用户运营

Acrobat Pro DC 2023如何插入附件?Acrobat Pro DC添加附件方法

Rose

替代关系型数据库 MAX 聚合函数的思路

alexgaoyh

MySQL 替代 聚合函数 最新数据 自关联

京东ES支持ZSTD压缩算法上线了:高性能,低成本 | 京东云技术团队

京东科技开发者

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

SEAL安全

开源 AI Kubernetes

【年后跳槽必看篇-非广告】老生常态之Spring AOP/IOC 实现原理

派大星

Java 面试 跳槽

如何自定义Safari的起始页

Rose

运行Adobe应用提示非正版This non-genuine Adobe app has been disabled soon如何解决

Rose

adobe

从前端角度浅谈性能 | 京东物流技术团队

京东科技开发者

APP加固原理与作用

ByConity 社区回顾|ByConity 和开发者们一起展望未来,携手共进!

字节跳动数据平台

开源数据库 ByConity

FCPX 插件无法使用?|Final Cut Pro X 插件不能使用出现叹号的解决办法

Rose

​万界星空科技MES系统如何进行产品的质量管理

万界星空科技

质量管理 MES系统 制造业 mes 制造业生产管理系统

AI遇上传统文化,文心一言上央视带来跨时空访古体验

飞桨PaddlePaddle

人工智能 深度学习

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