AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

关于web自动化过程中滑块解锁问题以及页面滚动的问题的研究

测试人

软件测试 自动化测试 测试开发

如何画一个系统的设计图

京东科技开发者

和鲸101领航:同济MBA与和鲸共建数智人才培养计划

ModelWhale

大数据 数字化 同济大学MBA

极限网关助力好未来 Elasticsearch 容器化升级

极限实验室

elasticsearch 网关 极限网关 极限科技

解决TaskPool中线程管理和XML解析问题的指南

彭康佳

很有意思的两个测试面试题

老张

淘宝搜索API返回值分析:关键字搜索在电商领域的应用价值

技术冰糖葫芦

API Explorer API 接口 API 策略 pinduoduo API

中国信通院启动科学智能(AI4S)产业图谱编制工作

中国信通院AI Infra工作组

如何在鸿蒙系统中设置Image的按压态

彭康佳

android 华为 鸿蒙

TDengine Open Day 成功举办:洞察技术革新与职场策略!

TDengine

数据库 tdengine 时序数据库

和鲸101领航:跨学科实训赋能人大数据人才培养,共推新文科建设

ModelWhale

大数据 中国人民大学 新文科

零售企业的“智慧大脑”:配补调系统为何不可或缺?

第七在线

和鲸101领航:ModelWhale助航遥中心改革AI科研范式

ModelWhale

人工智能 大数据 遥感应用

妙用OSGraph:发掘GitHub知识图谱上的开源故事

TuGraphAnalytics

GitHub tugraph antv osgraph x-lab

PPT下载 | 构建数据价值高速路--DataOps的应用实践与前沿探索

数造万象

数据治理 数据开发 科技 DataOps

OceanBase 金融项目优化案例

不在线第一只蜗牛

金融 案例分享 优化 oceanbase

技术解读华为云CCE Autopilot,k8s集群托管免运维

华为云开发者联盟

Kubernetes 云原生 华为云 华为云开发者联盟 企业号2024年6月PK榜

鸿蒙系统中的像素单位与API使用详解

彭康佳

android 鸿蒙 分辨率

这么简单的问题都不会,那还面试什么!?

王中阳Go

Go 面试 面试题 面经 Go进阶

解决DevEco Studio中的“Cannot find module”编译错误问题

彭康佳

android 鸿蒙

想做物联网卡系统 是因为不想忍

开源物联卡管理平台-设备管理

物联网 IoT eSIM安全 java 技术提升

会议通知|大模型基础设施高质量发展专题研讨会

中国信通院AI Infra工作组

业界领先的多核异构框架RTONBOOT介绍

winfredy

无人机 机器人 工业自动化 3D打印 精密运动控制

生成式推荐系统与京东联盟广告-综述与应用

京东科技开发者

如何快速开发一个鸿蒙原生app

FinFish

HarmonyOS 小程序技术 小程序容器技术 鸿蒙app 鸿蒙原生应用开发

湖仓一体全面开启实时化时代

Apache Flink

大数据 flink paimon streaming lakehouse

软件测试学习笔记丨Linux系统与shell环境准备

测试人

软件测试

深度解析:国有企业数字化转型的背景、现状与思路

优秀

数字化转型 央国企数字化转型 国企数字化转型

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