我正在尝试在结构中存储函数:
trait T<'a> {}
struct A {}
struct B<'a> {
a: &'a A
}
impl<'a> T<'a> for B<'a> {}
fn f1<'a, E: T<'a>>(a: &'a A) {}
struct D {
f: fn(&A)
}
fn main() {
let d = D { f: f1::<B> };
}
编译器抱怨:
error[E0308]: mismatched types
--> src/main.rs:18:20
|
18 | let d = D { f: f1::<B> };
| ^^^^^^^ expected concrete lifetime, found bound lifetime parameter
|
= note: expected type `fn(&A)`
= note: found type `fn(&A) {f1::<'_, B<'_>>}`
当你写f1::
但是,在
D
中,f
字段应该是一个函数,它接受对a
的任何生命周期的引用<代码>f1::
不幸的是,目前还没有办法做到这一点。Rust必须支持更高种类的类型或关联的类型构造函数。然后可以在
f1
中将E
定义为类型构造函数参数,而不是类型参数(尽管我想知道编译器将如何处理'a
生存期参数)。
我无法计算出这段代码的生存期参数。我所尝试的一切通常都会导致编译器错误:“预期的绑定生存期参数,找到了具体的生存期”或者类似于“考虑使用所示的显式生存期参数”(所示的示例没有帮助)或“与trait不兼容的方法”。 、和都是简化版本,以尽量减少此示例。 铁锈游乐场
虽然下面的代码是一个早期的原型,对于我在这个阶段如何实现协议缓冲区不必太认真,但我无法理解rust编译器给我带来的错误消息指的是什么。 src\main。rs:89:9:89:36错误:解决的类型不匹配
我有一个问题与生命周期参数的结构。我不能100%确定如何描述这个问题,但是我创建了一个显示编译时错误的简单案例。 我得到的错误是 我尝试了很多变体,只是无法编译这个东西。我在这里找到了另一个帖子(如何修复:预期的具体寿命,但找到了绑定的寿命参数),但似乎绕过了问题,而不是解决它。我真的不明白为什么这个问题会出现。该 有什么想法吗?谢谢你的帮助。
此代码基于生存期章节中Rust书中的示例代码。我想知道相同方法的以下两个版本有何不同: 对 我猜在第一个版本中,我们指示编译器 > 查找生存期,使两者都 确保返回的引用仅在该生命周期内使用,因为在该生命周期之外,它可能会成为悬空引用。 代码的第二个版本是做什么的?Rust书中的生命周期省略规则之一说,在结构方法中,返回的引用被分配了
问题内容: 我正在使用基于表单的身份验证。 我有一个注销链接,看起来像: 以及相应的注销方法: 点击注销链接后,我返回首页,但似乎没有CSS。当我按下按钮进行搜索时,出现以下错误: 但是CSS实际上位于/ resources下,因为我了解我的web.xml,所以不需要身份验证: 从这种状态来看,我似乎能够再次登录并看到偶尔无法恢复的错误之间的 一些 数据,但是没有CSS。真的有点破。任何建议,将不
我们的系统由许多运行在“干净”机器上的python脚本组成,也就是说,它们需要尽可能少的额外软件。有没有一种方法可以使用OpenTelemetry而不必在这些机器上运行额外的服务器?是否有一种推送模式来发送数据而不是拉送?