Если вы вдруг столкнулись с этой ошибкой, произнесите в рабочей среде и ничего не изменилось, попробуйте следующие 4 элемента в следующем порядке, чтобы узнать, исправляется ли это.
Ваш пример будет выводить Clone
без каких-либо проблем, если вы явно отметите, что T
должен реализовывать Clone
, например:
#[derive(Clone)]
struct Foo<'a, T: 'a> {
t: &'a T,
}
fn bar<'a, T: Clone>(foo: Foo<'a, T>) {
foo.clone();
}
Кажется необычным, что вы можете явно не указывать привязку, но ответ Shepmaster, похоже, предполагает, что компилятор вставляет его неявно, поэтому мое предложение функционально идентично.
T
, который реализует Clone
, но эта конкретная граница не обязана , чтобы клонировать ссылку. Если программа требует, чтобы T
был клонирован по другим причинам, это работает.
– Shepmaster
9 September 2016 в 15:55
T: ::std::clone::Clone + 'a
из вашего примера означает, что T
реализована Clone
; я не понимаю?
– Aurora0001
9 September 2016 в 15:56
Clone
на T
в структуре без проблем, и, делая это, я получаю точно такой же вывод из расширенного довольно принтера, как руководство impl
,
– Aurora0001
9 September 2016 в 16:14
Clone
без его получения. Это позволяет структуре вообще не иметь ограничений.
– Shepmaster
9 September 2016 в 16:14