my_copy<'a, T>(r: &Holder<'a, T>) -> Holder<'a, T> { *r }
В ответ на это я получил "у Holder не заимплеменчен Copy"
Он хочет ограничений на T. Но почему они нужны, если в структуре лежит ссылка, которая вполне себе Copy?
derive добавляет баунды на все дженерик параметры, т.е. он генерирует impl<T: Copy> for Holder<'_, T> {}
Можно руками имплементнуть, если что
Вот статья, которая объясняет почему так: https://stegosaurusdormant.com/understanding-derive-clone/ В твоём случае надо сделать impl<T> Clone for Holder<'_, T> { fn clone(&self) -> Self { Self { ..*self } } } impl<T> Copy for Holder<'_, T> {}
nit: fn clone(&self) -> Self { *self }
Обсуждают сегодня