如何通过成员变量调用函数?

2023-12-09

玩弄 Rust,我将一些代码提取到一个类中。为了保持它独立但独立的功能,我想保留一个回调函数并稍后调用它。为了保持简单,包括跳过明显的内容fn new(),我们有这样的东西:

pub struct Toy {
    go: fn(count: i16) -> String,
}

impl Toy {
    fn lets_go(&mut self, n: i16) -> String {
        self.go(n)
    }
}

建筑给了我...

...path.../src/toy.rs:7:14: 7:19 error: type `&mut toy::Toy` does not implement any method in scope named `go`
...path.../src/toy.rs:7         self.go(n)

据推测,有一种特殊的语法(或完全不同的构造)可以理解self.go()致电,但我在任何文档中都没有看到类似情况的示例或描述,因此我将不胜感激。

明显地,.go could是一个类似函子的类,但这对于 Rust 来说似乎不太惯用。


foo.bar(...)始终被解析为方法调用,它从不查找字段。这可以避免歧义,尤其是在特征方面。通过将调用和字段访问分成两个不同的表达式,可以强制其成为字段访问,例​​如,

let f = self.go;
f(n)

或者,更好,只是(self.go)(n).

Issue #2392涵盖改进这些诊断。

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

如何通过成员变量调用函数? 的相关文章

随机推荐

  • 通过 FastAPI 中的 pydantic 模型设置自定义错误响应的媒体类型

    在我的 FastAPI 应用程序中 我想将错误作为 RFC Problem JSON 返回 from pydantic import BaseModel class RFCProblemJSON BaseModel type str tit
  • Laravel 5中使用ajax从表中删除记录

    我想用ajax删除记录 view foreach products as product tr td product gt code td td product gt name td td product gt display td td
  • Excel 迭代工作表

    我有一个包含许多工作表的工作簿 如果前面的单元格与给定的字符串匹配 我需要在其中输入一个值 我的代码适用于我需要的工作表 但当它到达一些不需要的工作表 其中也有数据 时 它会出错 调试器突出显示的行是For Each r In Inters
  • 在 HTA 文件中使用 Javascript 从 Windows 注册表中读取/写入

    我目前正在尝试编写 Javascript 以便在 HTA 文件中读取和写入 Windows 注册表 这是我当前用来编写的代码 writeInRegistry function sRegEntry sRegValue Regpath HKEY
  • python pickle.dumps 断言错误

    我正在尝试腌制一个包含另一个实例的两个列表的类实例 两个列表中的实例具有引用彼此实例的属性 这是课程 import pickle from copy import copy class Graph def init self self ve
  • 如何匹配所有国际化文本?

    我正在执行一项搜索并销毁亚马逊认为令人厌恶的任何东西的任务 过去我通过使用来处理这个问题iconv从 UTF 8 转换为 latin1 但我不能在这里这样做 因为它被编码为 未知 test lt Gwena xeblle M gt gsub
  • 写入和读取文件时的奇怪行为

    执行以下代码时 第二次读取后 文件将被填充为零 直到达到 4096 字节大 我不明白为什么 f open file txt w f read gives f write Hello f read filled with x00 x00 f
  • System.Data.dll 中发生“System.InvalidOperationException”类型的未处理异常

    我正在 Visual Studio 2008 的 SQL Server 2008 Management Studio 版本中创建与数据库的连接 我在数据库中存储了一个名为 CTable 的过程 并且我想执行它 从 Visual Studio
  • 如何在C++中删除非空目录?

    在 C 中 如何删除目录及其包含的所有文件 我知道有rmdir 但它只会删除非空目录 那么如何首先列出并删除所有包含的文件 我知道使用 Boost Filesystem 应该不难 但我有点想避免仅仅为了这个小任务而构建和依赖它 是的 您通常
  • 时间输入字段[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在构建一个表单来接受时
  • fopen 在 ios 上的奇怪行为

    我试图通过 fopen 创建一个文件然后写入它 但是发生了奇怪的事情 当我将 iPhone 插入 USB 端口时 一切正常 按预期在 tmp 目录或文档目录中创建一个文件 当我拔掉设备并执行同样的操作时 该文件没有出现 我想知道为什么 我使
  • 如何解决 webpack 5 中的 polyfill 问题?

    如果我只是将下一个 js 添加到样板 Visual Studio 2022 React JS 应用程序中 我就会开始收到错误 具体来说 在向导中创建项目 并验证其运行 后 如果我在终端中执行此操作 npm i next 然后将以下行添加到我
  • Xamarin 绑定“包装类型”缺少其本机 ObjectiveC 类

    我正在尝试将外部附件 MSR SDK 绑定到 Xamarin 请注意 这是在设备上 它在模拟器中根本不起作用 我不断收到此错误 Wrapper type iMagProII IMag is missing its native Object
  • 在 NodeJs 中从 type: 'image/png' 转换为 ZPL

    我正在做和尝试的事情 我正在尝试将从 获取的屏幕截图转换为 NodeJS 中的 ZPL 字符串 很像http labelary com viewer html这将获取图像并输出 ZPL 代码 我在做什么 我正在使用一个名为 domToIma
  • 在Python中使用阿拉伯语WordNet作为同义词?

    我试图在句子中找到阿拉伯语单词的同义词 如果这个单词是英语 它就可以完美地工作 并且结果以阿拉伯语显示 我想知道是否可以立即获得阿拉伯语单词的同义词 而无需先用英语编写它 我尝试过 但没有成功 我更喜欢没有 tashkeel nart 而不
  • 为什么 swift 这里使用结构体而不是字符串作为字典键?

    Why UIImagePickerController InfoKey类型是结构而不是字符串 使用结构而不是字符串作为字典键有什么好处 public struct InfoKey Hashable Equatable RawRepresen
  • 通过单击按钮以另一种形式更改文本

    我一直在尝试通过单击 Form2 中的按钮 form2 中的button1 是 STARTA 来更改 Form1 中文本框的文本 现在可能花了 2 个小时 我是编程新手 我一直在寻找类似的问题并发现了很多 但即使在尝试了很多之后我也无法让它
  • 在java中查找天数差异

    在咨询了几个论坛后 我最终使用下面的代码来查找天数差异 但是 我发现逻辑有问题 可能是我的疏忽 我发现 11 至 14 日和 11 至 15 日之间的天数差异是相同的 这怎么可能 Date createdDate new Date 2013
  • 颤动 ListView 滚动到索引不可用

    我需要什么 我想按某个索引滚动列表 我该怎么做 我知道的 scrollToIndex应该从第 n 个索引开始 但是我们如何滚动到任意索引呢 不幸的是 ListView没有内置的scrollToIndex 函数方法 您必须开发自己的方法来测量
  • 如何通过成员变量调用函数?

    玩弄 Rust 我将一些代码提取到一个类中 为了保持它独立但独立的功能 我想保留一个回调函数并稍后调用它 为了保持简单 包括跳过明显的内容fn new 我们有这样的东西 pub struct Toy go fn count i16 gt S