玩弄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)

我不欣赏任何有可比性的文档,也不欣赏任何有可比性的例子.

显然,.go could可能是一个类似于函子的类,但这对于Rust来说似乎不是很常见.

推荐答案

foo.bar(...)总是被解析为方法调用,它从不查找字段.这避免了模棱两可,尤其是在性格方面.通过将调用和字段访问分离为两个不同的表达式,可以强制它成为字段访问,例如,

let f = self.go;
f(n)

或者,最好是(self.go)(n).

#2392期涵盖了改善诊断.

Rust相关问答推荐

按下按钮时如何在服务器中创建文件并在本地下载?

WebDriver等待三十四?(Rust Se)

为什么拥有的trait对象的相等运算符移动了正确的操作数?

如何创建引用构造函数拥有的变量的对象?

在Rust中,如果Result是Err,运行副作用(如日志(log)记录)的惯用方法是什么

在Rust中是否可以使用Rc自动化约束传播

当对VEC;U8>;使用serde_json时,Base64编码是保护空间的好方法吗?

为什么这个变量不需要是可变的?

异步函数返回的future 生存期

在0..1之间将U64转换为F64

减少指示ProgressBar在Rust中的开销

为什么我需要 to_string 函数的参考?

为什么将易错函数的泛型结果作为泛型参数传递 infer ()?不应该是暧昧的吗?

如何将 struct 数组放置在另一个 struct 的末尾而不进行内存分段

`use` 和 `crate` 关键字在 Rust 项目中效果不佳

Rust:为什么 Pin 必须持有指针?

如何获取模块树?

如何在 Rust 中将枚举变体转换为 u8?

改变不实现克隆的 dioxus UseState struct

如何在 Rust 的内置函数上实现特征?