【发布时间】:2021-01-19 18:01:08
【问题描述】:
我正在尝试使用生命周期参数创建 Result,作为对 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),
}
unused parameter, suggestion: add PhantomData
所以它没有工作。我读到我可以使用PhantomData 解决未使用的参数错误,但这对我来说似乎很脏。
这项工作也没有:
pub enum Result<T=A<'a>, E=B<'a>> {
Ok(T),
Err(E),
}
undefined parameter, suggestion: add parameter before T(twice)
这个建议让我陷入了困境!
如何在我的enum 泛型参数默认值中放置一个带有生命周期参数的泛型type?
【问题讨论】:
-
如果您包含一些示例代码会有所帮助,这些代码会显示您正在尝试执行的操作的上下文。因为不清楚为什么不能使用标准
Result,即返回类型为Result<A<'a>, B<'a>>。 -
可以使用别名代替默认类型:
type MyResult<'a> = Result<A<'a>, B<'a>>;
标签: generics rust enums lifetime-scoping