аргументов функции
the trait `ImageViewTrait` is not implemented for `&mut dyn ImageViewTrait<PixelType = Pixel<u8, u8, 1>>
И я что-то не понимаю, как может быть так что трейт-объект &mut dyn ImageViewTrait<...> не имплеметит трейт ImageViewTrait?
А можно код залить на пг?
К сожалению код сложный, с дженериками и ассоциироваными типами. Боюсь замучаюсь воспроизводить в коротком коде. Думал может кто-то уже с таким сталкивался.
Вызываемая функция вот так определена pub fn map_image<S, D, In, CC>( &self, src_image: &dyn ImageViewTrait<PixelType = S>, dst_image: &mut dyn ImageViewTrait<PixelType = D>, ) Ругается на аргумент dst_image, который я передаю в неё. Я пытаюсь передать в неё &mut dyn ImageViewTrait<PixelType = Pixel<u8, u8, 1>>, но компилятору это не нравится.
Нашёл решение для вчерашней проблемы. Оказывается я проглядел, что передавал в функцию &mut &mut dyn Trait вместо требуемого &mut dyn Trait "Гадкие макротсы", которые разворачивались в match по энуму, скрыли от меня этот факт. Без них я бы в IDE увидел тип передаваемого аргумента. Подсказка от компилятора была в целом правильной, но она так написана, что я сходу не догодался. Раст говорил, что-то вроде "мне надо dyn Trait, а ты передал &mut dyn Trait".
Обсуждают сегодня