有没有办法部分解构结构?

2024-01-08

我有一个结构:

struct ThreeDPoint {
    x: f32,
    y: f32,
    z: f32
}

我想要提取两个实例化后的三个属性:

let point: ThreeDPoint = ThreeDPoint { x: 0.3, y: 0.4, z: 0.5 };
let ThreeDPoint { x: my_x, y: my_y } = point;

编译器抛出以下错误:

error[E0027]: pattern does not mention field `z`
  --> src/structures.rs:44:9
   |
44 |     let ThreeDPoint { x: my_x, y: my_y } = point;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `z`

在 JavaScript (ES6) 中,等效的解构如下所示:

let { x: my_x, y: my_y } = point;

..作为a中的一个字段struct或元组模式意味着“以及其余的”:

let ThreeDPoint { x: my_x, y: my_y, .. } = point;

有更多关于此的内容锈迹斑斑的书 https://doc.rust-lang.org/book/ch18-03-pattern-syntax.html#ignoring-remaining-parts-of-a-value-with-.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法部分解构结构? 的相关文章

随机推荐

  • 本地化 JFileChooser“所有文件”字符串

    我正在使用 JFileChooser 开发一个 java 应用程序 用户可以切换语言 Locale setDefault Locale ENGLISH JFileChooser chooser new JFileChooser choose
  • 动态更改 ASP.Net 中的用户控件

    我正在尝试创建一个网页 该网页将根据下拉列表的选定值显示适当的用户控件 基本上页面布局是这样的 下拉选择 lt 基于下拉选择创建的用户控件 gt 我已经一半工作了 当选择改变时 控件也会改变 在 OnInit 中 我动态创建最后选定的控件
  • 过滤 Pandas 数据帧而不删除行

    我正在尝试使用where在我的 Pandas DataFrame 上替换所有不符合我的标准的单元格NaN 但是 我希望以始终保留原始 DataFrame 的形状的方式进行操作 并且不会从生成的 DataFrame 中删除任何行 给定以下数据
  • 如何将qml文件重新加载到QQuickView

    将 qml 文件重新加载到 QQuickView 的正确方法是什么 我正在使用 Qt Quick 2 1 并尝试编写一个简单的程序来加载 qml 文件并显示它 目前 我正在通过创建 QQuickView 来完成此操作 当我想重新加载 qml
  • 读一剪!在序言中

    我正在阅读同时阅读 Bratko 的 人工智能 Prolog 编程 第 5 章 控制回溯 起初 剪切似乎是模仿其他编程语言中已知的 if else 子句的直接方法 例如 Find the largest number max X Y Y X
  • android:如何在我的应用程序中实现像 Go Launcher 这样的首次教程?

    Go Launcher 有一个很好的初次使用教程 它与 Stock ICS 首次运行非常相似 我想学习如何在第一次启动我的应用程序时显示类似的教程 如何在我的 Android 应用程序中实现这个透明视图 与屏幕对象交互 我试图做相似的东西
  • 如何创建根据另一列计算的列?

    我需要创建一个专栏age在 SQL Server 数据库中 该列的值应根据该列的值计算DOB 它的值也应该增加Age增加 您应该使用计算列来解决此问题 其定义与此类似 ALTER TABLE Customers ADD Age AS dat
  • 如何让div换行

    我是CSS初学者 我想像这样将新的 div 放入新行中 我尝试这样的代码 div div
  • css 内联块和引导网格系统输出

    我正在尝试有一个具体的HTML我的 div 的标记使用css and bootstrap 3 2 下图展示了我想要得到的结果 我使用了引导网格系统 以便我的页面能够响应并在小屏幕设备中正确显示 这是我尝试过的代码 我用过http www b
  • 与字符串数字匹配 - 无法访问的代码

    scala 新手 似乎无法让我的匹配表达式工作 我已经了解了语句评估方式之间的差异 例如 一个新变量与声明的变量相对 但似乎无法使反引号或大写起作用 declared inside of object val numberOne 17201
  • Jersey:将值从 ContainerRequestFilter 传递到端点

    我正在使用 Jersey 2 9 并且创建了一个过滤器 它将采用加密的标头值 对其进行解密 然后将其传递到被调用的端点 我不知道如何做到这一点 我一直在互联网上搜索 但没有真正找到我想做的事情的具体例子 过滤器被调用 我只是在将值从过滤器传
  • 有没有办法将正则表达式更改为 Ruby on Rails 中的数字范围?

    我经常需要在正则表达式中创建数字范围 所以例如 2 3 0 9 是 20 39 之间的数字范围 为了仔细检查我的范围 我通常使用 Linux 命令 对于 2 3 0 9 Linux 命令为 seq 1 40 egrep 2 3 0 9 它为
  • 绑定失败:地址已被使用

    我正在尝试将套接字绑定到以下端口 if bind socket desc struct sockaddr server sizeof server lt 0 perror bind failed Error return 1 puts bi
  • NSDateFormatter 区别

    这两种日期格式有什么区别 第一个给出实际时间 第二个给出时间购买添加时区偏移值 NSDateFormatter dateFormatter NSDateFormatter alloc init dateFormatter setTimeZo
  • 检查 boost::variant 是否为 null

    我的程序中有一个 boost variant 我想检查该变体本身是否已初始化 以及其类型之一中是否包含值 我已经尝试过对该变体使用empty 但这似乎不起作用 检查 NULL 也不行 有谁知道如何检查这个吗 编辑 好的 看起来它永远不会为空
  • 在 Firefox 中打开一个新选项卡并将 ff 保留在后台

    是否有一种方法可以在 Firefox 中以编程方式在新选项卡中打开 URL 而无需 Firefox 获得焦点 到目前为止我发现了什么 firefox new window
  • 如何使用Radio.Group Antd设置检查?

    我有无线电绘制的动态数据 有一个活动无线电的 ID 它也是动态生成的 如何比较 id 并安装与 Radio Group 的检查 最后我需要获取表单中的单选值 该代码无法正常工作 动态数据可能会更大 const dynamiclyData i
  • FontForge:将字体的单独字形批量导出到 svg 文件中?

    是否可以将单个字形从字体批量导出到 SVG 而无需手动将它们一一导出 相关 但相反 将一系列 svg 文件作为字形导入 FontForge 并输出字体文件 https stackoverflow com questions 22124130
  • Screen.AllScreens 错误并将 WM_DISPLAYCHANGE 发布到单个 WinForm 应用程序

    首先 对这么长的帖子表示抱歉 关于如何限制 WM DISPLAYCHANGE 消息的发布范围有什么建议吗 设想 Screen AllScreens返回在客户端上检测到的所有监视器的坐标和分辨率的数组 如果在工作站锁定时启动应用程序 在夜间应
  • 有没有办法部分解构结构?

    我有一个结构 struct ThreeDPoint x f32 y f32 z f32 我想要提取两个实例化后的三个属性 let point ThreeDPoint ThreeDPoint x 0 3 y 0 4 z 0 5 let Thr