QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

评论

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

产品帮助中心对SaaS行业的作用

小炮

SaaS平台 帮助中心

多场景推进 服务网格在联通的落地实践(下)

百度开发者中心

限量独家!濒危动物数字藏品免费发放!

百度开发者中心

DevOps落地思考

火线安全

DevOps 云原生 云安全 DevOps认证

阿里巴巴云原生大数据运维平台 SREWorks 正式开源

阿里云大数据AI技术

大数据 自动化运维 大规模网络运维

公有云市场百舸争流!天翼云稳居第一梯队,进入领导者象限

天翼云开发者社区

一文来了解关于分布式锁的那些事儿

Linux服务器开发

redis 分布式 分布式锁 Linux服务器开发 Linux后台开发

以太坊的扩容革命:ETH2.0

不登山的小鲁

以太坊 扩容 Ethereum eth eth2.0

内存之旅——如何提升CMA利用率?

OpenHarmony开发者

内存 OpenHarmony

2022年最热门的招聘技术技能是什么,您绝对想不到

禅道项目管理

项目管理 开发技能

融云直播 SDK 升级,让直播「PK」起来

融云 RongCloud

直播 IM 场景化

电路模型和电路定律 (Ⅲ)

謓泽

3月月更

开学季 | 飞桨AI Studio课程学习,小白也可以成为一名优秀的算法工程师!

百度开发者中心

百度希壤元宇宙平台上线首个汽车数字展厅,领克探索汽车营销新方式

百度开发者中心

中台和多云管理是伪问题?运维要集体下岗了吗?

火线安全

DevOps 云原生 云安全

跑马灯带你深入浅出TextView的源码世界

vivo互联网技术

android 源码分析 TextView

两会“数字经济”高频出位,博睿数据为企业数字转型提供有力引擎

博睿数据

Gartner发布中国IaaS PaaS市场服务报告,天翼云强势入选

天翼云开发者社区

雄安新区设立四周年,看天翼云以数字底座托起未来之城

天翼云开发者社区

Rust 用于移动开发的几种方式

非凸科技

Java c++ Python rust 量化

IT运维工具难用吗?有没有简单易操作的?

行云管家

运维 IT运维

iOS开发面试的43道最新面试题,让你稳拿大厂offer!

iOSer

ios iOS面试 ios开发 iOS面试题

如何理解基础服务和通用服务

Im胡子

基础服务 通用服务 基础服务边界

天翼云成为首个加入openGauss社区的运营商云

天翼云开发者社区

Docker Build时的安全问题

火线安全

Docker 云原生 云安全 docker build

保姆级SpringBoot+Vue图片上传到阿里云OSS教程

沉默王二

Spring Boot

春分耕种时,AI“现身”田间地头

百度开发者中心

企业在线产品宣传册应该如何设计?

小炮

产品宣传手册

信通院推出数字化赋能者新标准天翼云获评数字化转型赋能服务集体

天翼云开发者社区

VuePress 博客之 SEO 优化(六)站长工具

冴羽

Vue 前端 vuepress SEO 博客搭建

QoS 设计:车联网平台消息传输质量保障|车联网平台搭建从入门到精通 04

EMQ映云科技

物联网 IoT mqtt coap emq

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