#rust
Вопрос:
У меня есть такая штука:
type G2d<'a> = GfxGraphics<'a, Resources, CommandBuffer>;
Как включить его в качестве поля в структуру?
pub struct Dc
{
g : G2d,
c : Context,
}
Но это дает:
expected named lifetime parameter
Я пытался:
pub struct Dc
{
g : amp;'a mut G2d<'a>,
c : Context,
}
window.draw_2d( amp;event, | c, g, device |
{
let mut dc = Dc { c, g };
});
Но это дает:
Я был бы признателен за любую помощь.
Ответ №1:
вся структура должна быть аннотирована временем жизни :
pub struct Dc<'a>
{
g : G2d<'a>,
c : Context,
}
Комментарии:
1. Спасибо вам за ответ. Я попробовал то, что вы предложили, и старая ошибка больше не является проблемой, но у меня есть новая: drive.google.com/file/d/145Rib8DRhxd4_LB3iUKQ_hy8IDM7Hkt2/… Есть идеи, как это исправить?
Ответ №2:
Правильное решение-это
pub struct Dc<'a, 'b>
{
g : amp;'a mut G2d<'b>,
c : Context,
}
Это логически неправильно, чтобы заимствование внешнего amp;mut было создано в тот же момент, когда была ссылка внутри G2d<‘a>. Таким образом, в выражении amp;’a mut G2d<‘a> эти обе жизни не могут означать, что они заимствуют одно и то же. Правильное решение-использовать несколько жизней.