172 похожих чатов

Народ, подскажите пожалуйста почему вот такой вот код не компирируется

и как его исправить?

struct Abc<I>
where I: Iterator<Item=u64> {
my_iter: I,
}

impl<I> Abc<I>
where I: Iterator<Item=u64> {

fn func1(&mut self) {
self.my_iter = vec![1,2,3,4,5].into_iter();
}
}

компилятор ругается вот так:

error[E0308]: mismatched types
--> src/abc.rs:16:24
|
12 | impl<I> Abc<I>
| - this type parameter
...
16 | self.my_iter = vec![1,2,3,4,5].into_iter();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected type parameter `I`, found struct `std::vec::IntoIter`
|
= note: expected type parameter `I`
found struct `std::vec::IntoIter<{integer}>`

8 ответов

14 просмотров

По-моему, компилятор считает, что [1,2,3,4,5] - это тип integer, а не unsigned, как определено в структуре

У self.my_iter есть какой-то тип I, а ты в него скармливаешь (почти) конкретный тип итератора. Компилятор удивляется

Dmitry-Rusakov Автор вопроса
Dmitry-Rusakov Автор вопроса
YeahGore'Kha (коренастый яблоко)
У self.my_iter есть какой-то тип I, а ты в него ск...

Идея следующая: у структуры есть поле типа итератор. В какой-то момент мы хотим внутри какого-то метода присвоить этому полю новое значение. Как это правильно записать на Rust? cc @Vatneek

Dmitry Rusakov
Идея следующая: у структуры есть поле типа итерато...

Поле типа итератор это бич раста. Нормально такое не пишется

Αλεχ Zhukovsky
не только

Ну понятно, но простой вариант через трейт обжекты, лучше так перефразирую, да

Похожие вопросы

Обсуждают сегодня

Даже если так - ты в этом месте рассчитывал пполучить новые данные, зачем тебе старые?
Vga
18
с какой версии дельфи (приблизительно) в функции возвращающей (а есть слово покороче?) строку стало не нужно инитить резалт пустой строкой? function foo: string; begin // Res...
Karagy
16
Дебил? Я ищу друга
Bitard 228
27
я, кстати, считаю что это плохая идея, перегружать нулевой регистр всякой фигнёй. Это просто запомнить, но это плохо для кода. ЛУчше бы было другие регистры использовать ну ...
Arioch The
11
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
лично мне из опыта вспоминается два основных источника результата в фукнкциях, возвращающих строку Первое - полностью новые данные. что мешает создать для них новую строку и в...
Vga
5
думаю, что надёжность тут перевесила а кроме того, подумай ещё ГДЕ размещать счетчик вот мы с тобой две функции, я тебя вызвал ты мне вернул строку ГДЕ ты должен разместить ...
Arioch The
7
опять пепяками меряетесь? пока нормально на js не попишете - у вас нет права голоса
Vitaly
14
Всем привет. Я что-то туплю. В эликсире есть config/runtime.exs чтобы грузить настройки времени выполнения. А в эрланге? Помню пару лет тому была дискуссия насчёт кошерности ...
Д. П.
5
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Карта сайта