Cat
Anton
Alexey
ЭТО СПАМ БОТ
Так нет же, зачем ему спамить, если в имени уже все написано?
Anton
Anton
ну вообще да
Vladimir
Anton
вопрос только в том хули китайские боты забыли в чате
Cat
Cat
это не спам бот
Vladimir
Отключите нотификешн о приходе нового тела
Cat
да ну, не отключайте
Anton
Vladimir
Alexey
У кого-то до сих пор включены уведомления от чатов на 500+ тел?
Cat
Cat
хм, странно
казалось есть, но мб только не в супер-группах, не знаю
Vladimir
Alexey
Латентный Бурят
А, уже было.
Латентный Бурят
Баян и всё такое.
Alexey
Ребят, начал учить раст. Кому можно кусок говнокода скинуть в лс и спросить, почему не работает?
Гипнотизирую одну и ту же функцию уже с час, глаз замылился, упускаю что-то
Женя Зэ
Alexey
На самом деле код компилируется, но не работает)
კაცი
куски говнокода кидаются на пастобин
Cat
или плейграунд, play.rust-lang.org
պլհկ
Berkus
Berkus
иначе всем лень
Alexey
в плейграунд кидай конечно
Уже разобрался, @kezvision в личке помог, но сказал, что тут все очень добрые тоже и можно в следующий раз прямо сюда кидать.
Berkus
Αλεχ
Как можно написать stateful итератор в расте?
Αλεχ
типа если ноль, то верни его, но в следующей итерации верни None?
Αλεχ
struct DigitEnumerator(u64);
impl Iterator for DigitEnumerator {
type Item = u8;
fn next(&mut self) -> Option<u8> {
let result = self.0 % 10;
self.0 /= 10;
Some(result as u8)
}
}
Αλεχ
непонятно, что делать с нулём
Cat
вместо new type сделать структуру с флагом?
Маjко
Αλεχ
а почему он ваще мутирует кстати self?
Αλεχ
разве не может быть итератора, который имеет стейт
Vladimir
Потому что итератора итерируется
Αλεχ
но только читает?
Αλεχ
а точно
Αλεχ
сама структура итератора
Αλεχ
точняк
Cat
Αλεχ
да эт понятно
Αλεχ
я когда понял что он мутабельнйы пошел во все тяжкиме
Αλεχ
все дошло уже
Αλεχ
пасиба
Αλεχ
а по генератору итерироваться можно?
Αλεχ
а то там я видел только руками вызываемые resume
Vladimir
У генератора тип возвращаемого значения может быть отличный от yield
Αλεχ
бред
Vladimir
Так что не понятно как в общем случае должен выводиться итератор
Αλεχ
ну вот я хочу типовую штуку из кучи языков
Cat
while let Some(...) = gen.resume() { }
не сработает?
Vladimir
Ну реализации для своего генератора итератор
Vladimir
В чём проблема
Αλεχ
do {
yield return x%10;
x/=10;
} while (x != 0)
Αλεχ
который бы вернул impl Iter<Item=u32>
Vladimir
Ну у раста генераторы другие
Vladimir
Yield прерывает выполнение, а return завершает. Ну и логично, что эти типы имеют разное значение.
Антон
Генератор, возвращающий итераторы?
Αλεχ
Αλεχ
во всех языках они просто являются удобной инлайн-записью Iter<T>
Cat
так что, генераторы уже в стейбле?
Αλεχ
нет
Vladimir
Итераторы с первой версии
Cat
Vladimir
Ну смотри, генератор своим "прерванием" отображает процесс выполнение некой задачи
Vladimir
И то что результат не полной работы, отличается по типу от результата полной - логично
Αλεχ
для таких вещей есть коллбеки
Αλεχ
генераторы это именно "сделай мне итератор вот по такому правилу"
Αλεχ
конечно могут