Generics 使用寿命参数的结果-使用寿命参数的枚举应用于默认T<';a>;和E<';a>;参数(锈蚀)
我试图用一个生存期参数生成一个Generics 使用寿命参数的结果-使用寿命参数的枚举应用于默认T<';a>;和E<';a>;参数(锈蚀),generics,rust,enums,lifetime-scoping,Generics,Rust,Enums,Lifetime Scoping,我试图用一个生存期参数生成一个结果,作为对T(::Ok(T))和E(::Err(E))通用参数的额外限制 // enums A<'a> and B<'a> elided pub enum Result<'a, T=A<'a>, E=B<'a>> { Ok(T), Err(E), } 未定义参数,建议:在T之前添加参数 (两次) 这个建议使我大吃一惊 如何将带有生存期参数的泛型类型放入我的枚举泛型参数默认值中?错误是正
结果
,作为对T
(::Ok(T)
)和E
(::Err(E)
)通用参数的额外限制
// enums A<'a> and B<'a> elided
pub enum Result<'a, T=A<'a>, E=B<'a>> {
Ok(T),
Err(E),
}
未定义参数,建议:在T之前添加参数
(两次)
这个建议使我大吃一惊
如何将带有生存期参数的泛型
类型
放入我的枚举
泛型参数默认值中?错误是正确的,此类型没有意义:
由于寿命仅在默认参数中使用,因此在以下情况下寿命是什么:
让foo=Result::Ok(42);//在这种情况下,生命周期是多少?
?
未使用生存期,这就是错误消息的来源
这个问题没有提供太多的上下文,但看起来你只想在你的类型中使用
A
。如果是这种情况,那么您必须使用
发布枚举结果),
犯错误(如果您包含一些示例代码,这将有助于显示您正在尝试执行的操作的上下文。因为不清楚为什么不可能使用标准的结果,即返回类型为结果>
。您可以使用别名代替默认类型:键入MyResult,b谢谢!我一直在努力解决过度的问题。)y长Result
类型,它没有“单击”我可以生成模块本地类型别名。我仍然想知道如何才能生成enum
,其中t
和E
的生存时间总是相同的,这样我就可以像let E=Result>和那样构造enum
:E
pub enum Result<T=A<'a>, E=B<'a>> {
Ok(T),
Err(E),
}