generics - 生命周期子类型和泛型:“生命周期参数不允许”错误
问题描述
我试图遵循书中描述的策略(和编译器),但我遇到了以下错误:
lifetime parameters are not allowed on this type: lifetime parameter not allowed
这是代码片段:
struct FooRef<'a, F: 'a>(&'a F);
struct Bar<'a, 'f: 'a, F: Foo<'f>> {
filter: &'a FooRef<'f, F<'f>>,
}
解决方案
F
是类型变量,而不是类型,因此不能有自己的类型或生命周期参数。如果您需要将类型变量约束为仅保存受生命周期限制的引用,则可以使用生命周期作为边界:
struct Bar<'a, 'f: 'a, F: Foo<'f> + 'f> {
filter: &'a FooRef<'f, F>,
}
推荐阅读
- c - C - 为什么将元素分配给动态分配数组的第一个元素总是不返回任何内容
- python-3.x - 打开字节流作为图像文件以访问 exif。'UnicodeDecodeError:'utf-8' 编解码器无法解码位置 0 中的字节 0xff:无效起始字节'
- python - 我正在尝试使用 selenium 加载等待列表并单击按钮,但我似乎找不到该元素
- javascript - qgis2web(传单) - 使用 javascript 切换“层列表”中的复选框
- c++ - 标准库或编译器在哪里利用 noexcept 移动语义(向量增长除外)?
- node.js - 根据部分路径的动态键映射获取json值
- python - 如何将其转换为列表或 numpy 数组
- java - Jackson.databind 异常的 Weblogic 部署问题
- c# - 在 Win 表单上出现错误“拒绝访问”
- vue.js - Nuxt.js:我可以使用基于布尔值的三元运算符添加一个类吗?