我有这样的事情:
type G2d<'a> = GfxGraphics<'a, Resources, CommandBuffer>;
如何将其作为字段包含在结构中?
pub struct Dc
{
g : G2d,
c : Context,
}
但它给出了:
expected named lifetime parameter
我试过了:
pub struct Dc
{
g : &'a mut G2d<'a>,
c : Context,
}
window.draw_2d( &event, | c, g, device |
{
let mut dc = Dc { c, g };
});
但它给出了:
我将不胜感激。
答案 0 :(得分:1)
整个结构应该用生命周期注释:
pub struct Dc<'a>
{
g : G2d<'a>,
c : Context,
}
答案 1 :(得分:0)
正确的解决方法是
pub struct Dc<'a, 'b>
{
g : &'a mut G2d<'b>,
c : Context,
}
在 G2d<'a> 内部创建引用的同时创建外部 &mut 借用在逻辑上是不正确的。因此,在表达式 &'a mut G2d<'a> 中,这两个 'a 生命周期不可能意味着它们借用了相同的东西。正确的解决方案是使用多个生命周期。