参数/模式中“&variable”的含义

2024-01-12

什么是&variable当它用于模式或闭包参数时意味着什么?

for &code in self.exit_code.iter() { ... }

let mut new_seps = do seps.iter().fold(~[]) |result, &next| { ... }

这里我们有&code and &next in for循环和闭包定义。做什么&登录这些意味着什么?为什么我们不能简单地使用code and next,没有&符号?是否与以下有关ref模式匹配中的限定符?是否与以下有关& in self特质实现中的争论?

我在这个语法中找不到任何内容当前 Rust 参考手册 http://static.rust-lang.org/doc/0.8/rust.html#do-expressions nor in tutorial http://static.rust-lang.org/doc/0.8/tutorial.html。目前我认为这是某种隐式取消引用(这是从错误消息得出的,如果我省略&在模式中),但我不确定。


这是一个模式匹配,“解构”某种类型的东西&T。也就是说,在

let &x = &1i; 

x有类型int,值为 1。所以它实际上与ref(这就是@KerrekSB所说的,ref x通过引用而不是通过值捕获)。

可以将其视为类似于

match returns_an_option() {
    Some(a) => { ... }
    None => { ... }
}

除了构造函数&T is &, not Some or None.


在这个具体例子中,我猜seps是一个向量(你所说的错误表明它可能是一个&[&str]), 所以.iter()返回一个实现的对象Iterator<& &str>,也就是说,它是对向量元素的引用的迭代器 (&str),因此,您需要取消引用next以某种方式到达原始状态&str。这可以通过以下方式完成&在模式匹配中(如代码所示)or with *next当它被使用时。

(请注意,&模式仅适用于隐式可复制类型,因为无法将所有权从引用/borrowed指针(即&T).)

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

参数/模式中“&variable”的含义 的相关文章

随机推荐

  • 使用背景图像作为项目符号对齐中心列表项

    我已经尝试解决这个问题一个小时了 但找不到解决方案 我想要的是一个居中列表 背景图像为 刻度 我要这个 正常工作 除了点与列表左侧对齐之外ul 1140px 宽 而不是列表项的左侧li这是居中的 你可以使用CSS before伪类 ul l
  • 获取给定 DN 的 NT 样式域\用户

    我有 Active Directory 中用户的 DN 我想从中获取 NT 样式 域 用户 sAMAccountname AD 属性为我提供了用户部分 但是域呢 Thanks 您可以通过获取用户 DN 的最后部分 DC domain DC
  • 如何设置每 10 次触发 LLDB 断点?

    要调试高频计时器或传感器的值 配置一个仅每 x 次触发的断点会很有用 实现这一目标的最佳方法是什么 我在 Xcode 中尝试了 停止前忽略 x 次 选项 但这仅适用于第一次 我可以使用 LLDB 命令重置此计数器吗 您可以随时使用以下命令重
  • 子窗体定位如 StatusBar

    我有一个带有菜单栏和状态栏的 MDIForm 当我创建一个子窗体并将其定位为 Align alBottom 时 该窗体会离开屏幕区域 并且主窗体滚动条被激活 如何将子窗体定位在状态栏上方 对于没有父级负责显示它的控件 对齐和锚点并不能真正按
  • Swift - 在面部识别运行后,使用 Apple 登录始终会导致“注册未完成”

    我首先按照本教程使用 Firebase 设置 使用 Apple 登录 https medium com swift products sign in with apple with firebase authentication xcode
  • 针对动态变量的 If 语句[重复]

    这个问题在这里已经有答案了 我正在尝试做类似以下的事情 New Variable Name state name Value True if state name eq True Write Host Pass else Write Hos
  • css和xhtml中的每个元素和属性、属性是否有必要使用小写?

    4 2 元素和属性名称必须小写 XHTML 文档的所有 HTML 元素和属性名称必须使用小写 这种差异是必要的 因为 XML 区分大小写 例如 和 是不同的标签 来源 http www w3 org TR 2002 REC xhtml1 2
  • 多个 selectInput 值会产生意外的 dplyr (postgres) 行为

    我有一个可爱的闪亮应用程序 它接受 selectInput 值 查询 postgres 数据库 并输出一个图表 这是一个简单的界面 但由于 dplyr 数据库连接 很难在这里重现 今天我将第一个 selectInput 值更改为 multi
  • Laravel 表单请求数组验证自定义规则

    我想创建一个表单请求验证 但不知道如何操作 我有一个表格
  • 如何使用excel vba获取href属性

    我想检索的 href 属性 h3 html页面的标签 我能够获取innerText 但我不知道如何访问href属性 有几个 h3 文档中的标签 但目前我只需要第一个 剩下的我稍后再处理 这是我到目前为止得到的代码 Sub Scrap Dim
  • 尝试在java中执行命令时出错[重复]

    这个问题在这里已经有答案了 我正在尝试使用终端但从 java 运行 java 文件 意思是 我将使用 java 运行该命令 我正在尝试执行命令 cd Users apple Documents Documents workspace Use
  • Kivy外规则继承2

    作为后续问题 Kivy 外部规则固有 https stackoverflow com questions 31618565 kivy outside rule inherence Kivy 规则继承与 add widget https st
  • 我们如何配置闪亮的开源服务器来支持并发用户

    我有一个 R Shiny 应用程序 我想使用开源解决方案托管该应用程序以支持大约 50 个并发用户 我遇到了 RStudio 的闪亮服务器 它可以用来将闪亮的应用程序部署到网络上 我想使用shinyserver的开源版本 文档说我们可以使用
  • 权限拒绝:编写 com.sec.android.provider.badge.BadgeProvider

    我最近在使用 Android Nougat 的三星手机上运行我的应用程序时发生崩溃 我没有授予 com sec android provider badge BadgeProvider 的运行时权限 这导致了崩溃 我不知道如何授予此徽章提供
  • Printf - 读取位置访问冲突 - C++

    0xC0000005 读取位置 0xcccccccc 时发生访问冲突 printf 抛出此异常 我不知道为什么会发生这种情况 这些字符串变量中有值 我使用 printf 错误吗 帮助 请参阅开关盒 string header string
  • 使用 Tortoise-Hg 克隆在中间中止[命令返回代码 255]

    我在用乌龟汞 http tortoisehg bitbucket io download for 克隆一个叉子 from CodePlex http nearforums codeplex com SourceControl changes
  • 将 Kaggle csv 从下载网址导入到 pandas DataFrame

    我一直在尝试不同的方法来导入 SpaceX 任务csv file https www kaggle com spacex spacex missions downloads database csv on Kaggle https www
  • 无法加载文件或程序集 Microsoft.IdentityModel.Tokens 问题

    我正在尝试使用 JWT 令牌验证用户 我下面使用的代码在控制台应用程序中运行得非常好 但是当我想将它应用到我的 Azure 函数中时 它给出了错误 Could not load file or assembly Microsoft Iden
  • 系统属性管理

    有没有 足够 的方法来更改詹金斯的系统属性 改变它们最简单 最快的方法是什么 例如 我需要关闭无用的 在我的例子中 ping 线程 如果您确实想要一种快速而简单的方法来更改系统属性 您可以使用脚本控制台 https wiki jenkins
  • 参数/模式中“&variable”的含义

    什么是 variable当它用于模式或闭包参数时意味着什么 for code in self exit code iter let mut new seps do seps iter fold result next 这里我们有 code