Microsoft-ui-xaml: 建议:WinUI 3 rust 支持

创建于 2020-05-20  ·  14评论  ·  资料来源: microsoft/microsoft-ui-xaml

Rust 变得越来越流行。 它已经可以驱动 DirectX 12,但只能在全屏模式下或通过看起来像是工程师为工程师制作的 UI 库。 WinUI3 对 rust 的支持将允许构建看起来现代和优美的 rust 应用程序,并且在引擎盖下享受 rust 的所有优点。 这将使工程师和营销人员高兴,即使这种组合对商业应用程序可行。

feature proposal

最有用的评论

winrt-rs可能能够实现连接,但是一个显式的winui3-rs crate 可以引入必要的依赖项并拥有一个工作的 hello world 将使它更容易访问。

所有14条评论

语言映射似乎已经在工作: https ://github.com/microsoft/winrt-rs

winrt-rs可能能够实现连接,但是一个显式的winui3-rs crate 可以引入必要的依赖项并拥有一个工作的 hello world 将使它更容易访问。

这(可能)被winrt-rs稳定阻止。

@kennykerr仅供参考

Rust winrt crate 提供语言投影和打包支持,可与具有VS 扩展NuGet支持的C++/WinRT相媲美。 如今,所有这些都由Rust/WinRT提供。 我的清单上很快就会添加一些 Xaml 示例。 我们还有一些路要走来支持在 Rust 中构建您自己的 Xaml 控件,但是您已经可以构建基本的 Xaml 应用程序,我们正在努力获得完整的类型系统支持。

我很想听听人们还在寻找什么。 我可以想象这更多的是为 Xaml 编译器传统上负责的各种事情提供支持,但我可能错了。

我也很想看到这种情况发生。
Rust 越来越受欢迎是有原因的。 它是一种非常好的语言,微软甚至说要使用 rust 来构建 Windows 的某些部分。
拥有一个围绕 rust 构建的应用程序框架意味着 c++ 级别的性能,但具有更好的可读性代码和更少的内存错误。

@kennykerr “我很想听听人们还在寻找什么。”
主要动机是能够拥有尽可能多地在 rust 中原生编写的具有专业外观的应用程序。 不知何故,具有出色语言设计技能的人似乎与具有出色艺术 UI 小部件设计技能的人不同。 因此,WIN UI 3 的 rust 包装器将弥合鸿沟。 但是当有图书馆应该做到这一点但没有实际这样做的例子时,进入的门槛很高。 拥有一个将技术联系在一起的 hello world 示例将使更多的人真正想要深入研究并制作他们自己的衍生产品。 我个人会喜欢在 WIN UI 应用程序的面板中使用 WIN UI 3 和 DirectX12 的 rust 示例。 我没有开始研究它,因为在刚开始学习 rust 时似乎很难。

我一直期待在 Rust 中做更多的 GUI 工作。 WinUI 听起来只是一个尝试的地方

@kennykerr “有一个将技术联系在一起的 hello world 示例将让更多的人真正想要深入研究并制作他们自己的衍生产品。”

Hello world 足以显示 ui。 一个示例 todo 应用程序展示了一些简单的交互,以及这些部分如何组合在一起。

我记得关于.Net MAUI的公告,我想知道 WinUI 中有多少基础?

对我来说,灵感来自一个名为 vgtk 的 Rust GUI 框架。
https://bodil.lol/vgtk/

这个框架的语法很大程度上受到了 React 用于构建声明式 UI 的 jsx 语法的启发,它的编程模型是现在流行的 MVU 模型。

要声明一个应用程序,请编写

fn view(&self) -> VNode<Model> {
    gtk! {
        <Application::new_unwrap(None, ApplicationFlags::empty())>
            <Window border_width=20 on destroy=|_| Message::Exit>
                <HeaderBar title="inc!" show_close_button=true />
                <Box spacing=10 halign=Align::Center>
                    <Label label=self.counter.to_string() />
                    <Button label="inc!" image="add" always_show_image=true
                            on clicked=|_| Message::Inc />
                </Box>
            </Window>
        </Application>
    }
}

这非常接近 jsx,但更接近 XAML,非常适合用于 WinUI。 rust 中的这种语法由 rust 的过程宏功能启用。

在我看来,这种类型的 UI 框架是近来的趋势,而 rust with WinUI 要想成功,也需要搭上这趟火车。 这种类型的工作已经做过无数次了,微软为WinUI创建一个可能很容易。 这也可能是一个跨平台 UI 框架的好机会,因为这是 rust GUI 社区热切期待的,但这似乎超出了这个问题的范围。

还有一点值得注意的是,XAML 需要“部分类”支持,对吧? 因此,您可以向 UI 元素添加控件。 Rust 支持这个吗? 你能用过程宏来模仿它吗?

感谢所有的反馈! 保持它来。

@suleyth - Xaml API 不需要部分类。 这是 Xaml 编译器使用的 C# 语言的一个功能。 对于 C++ 和现在的 Rust,我们正在探索一种完全不同的方法,这种方法对这些语言来说更自然。 是的,过程宏是在 Rust 中解决这个问题的好方法。 我们在winrt-rs中广泛使用它们。

这事有进一步更新吗?
编辑:如果有使用 winui 支持 rust 的路线图,那就太好了

我不能代表 WinUI 团队发言,但对 Rust 的大部分支持将来自 Rust/WinRT 语言投影 ( winrt-rs )。 特别是,我现在正致力于在 Rust 中添加对定义和实现 COM 和 WinRT 类型的支持。 这是完整 Xaml 集成的主要先决条件。 一旦准备就绪,我们就可以开始研究在 Rust 中更自然地点亮 Xaml 绑定支持。

此页面是否有帮助?
0 / 5 - 0 等级