Субтипирование и обобщение времени жизни: ошибка «параметр времени жизни не разрешен» - PullRequest
0 голосов
/ 19 сентября 2018

Я пытался следовать стратегии , описанной в книге (и компиляторе), но я застрял на следующей ошибке:

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>>,
}

1 Ответ

0 голосов
/ 19 сентября 2018

F является переменной типа, а не типом, и поэтому не может иметь собственных параметров типа или времени жизни.Если вам нужно ограничить переменную типа только теми ссылками, которые ограничены временем жизни, вы можете использовать время жизни в качестве границы:

struct Bar<'a, 'f: 'a, F: Foo<'f> + 'f> {
    filter: &'a FooRef<'f, F>,
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...