了解结构域突变

2024-01-12

来自锈书 https://doc.rust-lang.org/book/structs.html关于如何改变结构体字段:

let mut point = Point { x: 0, y: 0 };
point.x = 5;

然后:

可变性是绑定的属性,而不是结构本身的属性。

这对我来说似乎违反直觉,因为point.x = 5看起来我没有重新绑定变量point。有没有一种方法可以更直观地解释这一点?

我能解决这个问题的唯一方法就是“想象”我正在重新绑定point到原件的副本Point与不同的x值(甚至不确定这是否准确)。


这对我来说似乎违反直觉,因为 point.x = 5 看起来不像我正在重新绑定变量点。有没有一种方法可以更直观地解释这一点?

所有这一切都表明,某物是否可变是由let- 变量的声明(绑定),而不是类型或任何特定字段的属性。

在示例中,point它的字段是可变的,因为point被介绍在一个let mut声明(而不是简单的let声明)而不是因为某些属性Point一般类型。

作为对比,为了说明为什么这很有趣:在其他语言中,例如 OCaml,您可以在类型定义中将某些字段标记为可变:

type point =
   { x: int;
     mutable y: int;
   };

这意味着你可以改变y每个领域point值,但你永远不能变异x.

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

了解结构域突变 的相关文章

随机推荐

  • @Order注解对XML序列化顺序没有影响

    我正在使用 Retrofit 2SimpleXmlConverter我在创建 Soap 请求对象时遇到一个问题 该对象基本上是一个具有 4 个元素子元素的元素 每个子元素都是不同的数据类型 这里是XML我想要产生的输出 必须遵守元素顺序
  • 如何在 Xcode 9 中使用带有 Playground 的自定义框架

    我正在尝试在 Playground 中使用自定义框架 如 Apple 文档中所述 http help apple com xcode mac 9 0 devc9b33111c http help apple com xcode mac 9
  • Eclipse 上安装的插件不可见

    当我在 Eclipse 中安装插件时 一切都很顺利 但重启后新插件就看不见了 我尝试过使用不同的插件 但它们都有同样的问题 我能看到它们的唯一地方是当我查看 已安装什么 时 可能是什么问题呢 这个问题及其解决方案在DZone 文章 http
  • 我正在用 C 搜索 cgi 库来构建一个安静的 Web 服务

    我想构建一个安静的 CoAP Web 服务 它可以执行 C 代码来处理事件 因此我正在搜索一个lib 它为我提供了C和cgi中的rest api 类似于 遗憾的是 restcgi 是用 c 编写的 而 CGI Simple 是用 perl
  • System.Data.SqlClient.SqlException:列名“Gender_id”无效

    我正在学习使用 ASP NET MVC 和实体框架进行 Web 应用程序开发 我有一个包含 3 个表的数据库 分别是学生 性别和课程 我遇到了这个问题 错误位于第 23 行 列名称 Genders Id 无效 列名 Programs Id
  • ruby 方法名称中的变量

    我有以下代码 for attribute in site device attributes device attribute end 我希望代码用 属性 的值替换方法名称 我努力了device attribute 以及各种排列 这完全不可
  • 找不到文本月份,跟踪数据 Carbon - laravel

    我确实尝试了不同的方法 但没有得到正确的时间格式 news gt created at Carbon parse news gt created at gt format M d Y news gt created at date d M
  • OpenCV DFT_INVERSE与Matlab的ifft不同

    我尝试使用 opencv 的 dft 函数过滤信号 我尝试的方法是在时域中获取信号 x 0 0201920000000000 0 0514940000000000 0 0222140000000000 0 0142460000000000
  • getenv() 的全局变量?

    哪个全局变量保存了 getenv 的所有环境变量 在哪个 glibc 文件中 这个 var 填充了 env vars 我相信它是 environ 但是当我在 bash 中设置环境变量时 它只输出 SSH AGENT PID 环境变量 为什么
  • 什么是 SQL“伪列”?

    我不小心编码了SELECT FOO 并收到错误 无效的伪列 FOO 我找不到他们的任何文档 这是我应该知道的事情吗 编辑 这是一个 MS SQL Server 特定问题 伪列是实际列的符号别名 具有特殊属性 例如 IDENTITY 是分配了
  • Cordova PushPlugin:应用程序未运行时 Android 不会播放推送声音

    我正在使用推送插件 https github com phonegap build PushPlugin对于cordova 以及在android中 当应用程序未运行或在后台时 我无法使推送通知播放声音 状态栏中的横幅显示正常 这是在 and
  • java.lang.IllegalArgumentException:API接口不得扩展其他接口Retrofit 2

    我在使用 Retrofit 2 beta 2 时遇到了下一个问题 java lang IllegalArgumentException API interfaces must not extend other interfaces 这是因为
  • 访问非指令控制器函数内的属性值

    HTML 内容
  • Hydra MPI 的最大进步是什么

    我正在研究 MPICH2 自动附带的新流程管理器 但到目前为止我无法弄清楚这个实现有什么重大进步 有人知道一个好的教程或有一些经验吗 argonne wiki 有点太简单了 http wiki mcs anl gov mpich2 inde
  • Lua检查文件是否打开

    我正在尝试编写一个 lua 文件脚本来检查某个文件是否打开 然后我希望它关闭该文件 如果该文件已打开 我知道如何检查文件是否存在 但我需要知道如何检查文件是否打开 即文件正在运行 Lua 与 C C 和几乎所有其他语言一样 只能关闭它打开的
  • 页面加载时检查引导表复选框

    我在用引导表 http bootstrap table wenzhixin net cn documentation 我正在尝试设置复选框 问题是复选框在没有特殊原因的情况下被启动为选中状态
  • 如何从firestore数据库中的云功能更新多个文档?

    我是 firebase 云功能的新手 我想更新username一些文件的字段来自posts集合时users收藏改变它username特定文档的字段 我使用以下代码来做到这一点 exports updateProfileUsername fu
  • VC++:KB971090 并选择 Visual C 运行时 DLL 依赖项

    如您所知 Microsoft 最近为 Visual Studio 部署了安全更新 KB971090 http support microsoft com kb 971090 除此之外 这还将 Visual C 运行时 DLL 从版本 8 0
  • Java HttpUrlConnection POST 请求特殊字符奇怪的行为

    我正在尝试使用 HttpURLConnection 实现 POST 请求 这是我的代码 private static void call String body throws IOException HttpURLConnection co
  • 了解结构域突变

    来自锈书 https doc rust lang org book structs html关于如何改变结构体字段 let mut point Point x 0 y 0 point x 5 然后 可变性是绑定的属性 而不是结构本身的属性