rust - 如何调用作为字段的`dyn Fn`?
问题描述
struct DummyRtspClient<'a> {
on_produce: &'a dyn Fn(EncodedPacket)
}
impl ... for DummyRtspClient {
fn set_on_produce(&self, f: &'a dyn Fn(EncodedPacket)){
self.on_produce = f;
}
}
那我该怎么用on_produce
?
我试过了
let encoded_packet = EncodedPacket{
data: Vec::new(),
};
self.on_produce(encoded_packet);
但它说这on_produce
不是成员函数,而是一个字段。
我试过了self.on_produce.call(encoded_packet)
,但我也遇到了错误。
解决方案
你的错误信息应该是这样的:
error[E0599]: no method named `on_produce` found for reference `&DummyRtspClient<'a>` in the current scope
--> src/lib.rs:14:18
|
14 | self.on_produce(encoded_packet);
| ^^^^^^^^^^ field, not a method
|
help: to call the function stored in `on_produce`, surround the field access with parentheses
|
14 | (self.on_produce)(encoded_packet);
| ^ ^
特别是,第二部分准确地告诉你如何解决这个问题:用self.on_produce
一组括号括起来以消除它试图调用成员函数的歧义。
推荐阅读
- python - 为什么这个 JSON 树没有变成熊猫数据框
- bash - 保留目录的最后三个版本
- .net - 对 IQueryable 对象内的数据进行排序
- powershell - 如何检查特定文件是否在文件夹中并写入主机是否存在
- google-maps - 由圆圈组成的谷歌地图多边形
- c++ - Vscode C/C++ 调试器控制台实现
- github-actions - Github Renovate company/package not found composer with auth.json composer
- python-3.x - 使用 Python 请求库进行 Web 抓取,给出 429 客户端错误
- android - 为 kotlin dsl 生成 pom.xml
- javascript - 如何强制用户一一选择选项?