Anonymous
Это откуда?)
https://knowyourmeme.com/memes/press-f-to-pay-respects
Cat
Это откуда?)
(из какой-то колды)
Anton
кто нить уже юзает tower ?
Anton
кто нить уже юзает tower ?
как гит систему, редко - да
Cat
как гит систему, редко - да
this https://github.com/tower-rs
Mykyta
Подскажите новичку. Есть два стрима, которые хочу запихнуть в event loop крутиться параллельно друг другу (потом еще обмениваться данными, но это потом). Сделал playground с двумя таймерами, которые хочу подружить, но не нахожу рабочего варианта, как. Смотрел в гугл и SO, но нашел только мусор http://play.rust-lang.org/?gist=7dc63a08f9e0f1f294e0611638664317&version=nightly&mode=debug&edition=2018 В какую сторону мне следует копать?
red75prime
В сторону map_err, join и map
red75prime
http://play.rust-lang.org/?gist=a05fe5ad596ea218c33ac7a499b108dd&version=nightly&mode=debug&edition=2018
Mykyta
Упс, я думал это для привязки к окончанию предыдущей футуры, спасибо
Vladimir
Упс, я думал это для привязки к окончанию предыдущей футуры, спасибо
Ну в данном коде вроде так и есть, тебе наверное https://docs.rs/futures/0.1.0/futures/stream/trait.Stream.html#method.merge нужен
(((Sergey(not seresha))
Тут тоже нужен бот
red75prime
Ну в данном коде вроде так и есть, тебе наверное https://docs.rs/futures/0.1.0/futures/stream/trait.Stream.html#method.merge нужен
В этом случае неважно merge или join. Вот если бы стримы выдавали что-то нетривиальное, а нет () как здесь...
(((Sergey(not seresha))
Как в джерке
Vladimir
В этом случае неважно merge или join. Вот если бы стримы выдавали что-то нетривиальное, а нет () как здесь...
У тебя хенделы асинхронно выполняются. А мерж синхронизирует обработку двух результатов
Vladimir
По этому разница есть
red75prime
По этому разница есть
И в чём-же эта разница заключается? В одном случае каждое замыкание выполнятся по своему таймеру, в другом случае каждое замыкание выполняется по своему таймеру.
Vladimir
Не будет двух замыканий в кейсе мержа
red75prime
И куда же они денутся? В исходном коде замыкания (это то, что с двумя вертикальными палочками |_| blalba) есть, а после merge они исчезают? И в том и в другом случае в event loop крутится одна таска, которая выполняет два разных замыкания. Хватит уже придумывать.
Vladimir
И куда же они денутся? В исходном коде замыкания (это то, что с двумя вертикальными палочками |_| blalba) есть, а после merge они исчезают? И в том и в другом случае в event loop крутится одна таска, которая выполняет два разных замыкания. Хватит уже придумывать.
Ну мерж же не так работает, мерж объединяет два аутпата стримов, в итоге у тебя остаётся одно замыкание. Если человек хотел просто поместить их в токиевский ивентлуп - то жоин подходит больше, если он хотел поверх стрима, вне Токио навернуть ивентлуп каких-то своих событий (for_each), при этом хочет одновременно обрабатывать несколько источников, то тут решение мерж
Слава
Ну мерж же не так работает, мерж объединяет два аутпата стримов, в итоге у тебя остаётся одно замыкание. Если человек хотел просто поместить их в токиевский ивентлуп - то жоин подходит больше, если он хотел поверх стрима, вне Токио навернуть ивентлуп каких-то своих событий (for_each), при этом хочет одновременно обрабатывать несколько источников, то тут решение мерж
"В Торонто заарендуешь кар, какой-нибудь небольшой, незаметный, выедешь на хайвэй, там возьмешь шестой экзит, проедешь ровно два майла, на шулдере увидишь голубой "шевроле". На крыше антенна, на заднем стекле жалюзи, номер замазан грязью. Фолуй за этим "шевроле", особо не приближайся, но из виду не выпускай."
Αλεχ
чет я тупанул
Αλεχ
че за хуйня?
Αλεχ
let mut buf = [0_u8, $n_words*16]; let len = buf.len();
Αλεχ
(gdb) p buf $2 = {0, 64} (gdb) p len $3 = 2
Αλεχ
штаа?
Αλεχ
почему 2?
Vladimir
0 и 64
Vladimir
а ты чего хочешь?
Cuno
> [0_u8, $n_words*16] запятая (должна быть точка с запятой)
Αλεχ
бля)
Αλεχ
спасибо
Αλεχ
а итераторы без векторов бывают?
Αλεχ
ну то есть я знаю, что у меня будет 32 элемента
Αλεχ
и я хочу массив
Αλεχ
щас приходится делать цикл и заполнять массив, а хотелось бы map/fold/...
պլհկ
ты знаешь, а компилятор нет
Sergey
ну то есть я знаю, что у меня будет 32 элемента
не надо писать сообщения столбиками
Αλεχ
ты знаешь, а компилятор нет
эмм. компилятору обычно можно объяснить, для этого ЯП и существуют. Вопрос, можно ли в этом случае
պլհկ
VLA нет => нельзя
Adam
Можешь сделать ньютайп с массивом внутри и для него FromIterator заимплементить. Если кол-во элементов не совпадает - кидаешь панику.
Αλεχ
ну вот думаю что-то такое
Αλεχ
хотя не получится
Αλεχ
итератор уже теряет инфу о своей длине
Αλεχ
короч забавно
Αλεχ
я этим занимался в шарпах лет 5 назад
Αλεχ
и все вернулось туда же)
Сергей
какбе https://doc.rust-lang.org/std/iter/trait.ExactSizeIterator.html
Αλεχ
клево
Vladimir
плюс еще можно по ходу дела паникнуть
Vladimir
когда ты вдруг понял, что итератор кончился, или что массив оказался короче
պլհկ
чего только не сделаешь, чтоб фор луп не использовать
պլհկ
😊
Маjко
А, сори, у меня контекст перескочил с разговора про ивентлупы
Маjко
wut
Ну и не отрицай
Αλεχ
impl From<U256> for U512 { fn from(value: U256) -> U512 { let U256(ref arr) = value; let mut ret = [0; 8]; ret[0] = arr[0]; ret[1] = arr[1]; ret[2] = arr[2]; ret[3] = arr[3]; U512(ret) } } impl<'a> From<&'a U256> for U512 { fn from(value: &'a U256) -> U512 { let U256(ref arr) = *value; let mut ret = [0; 8]; ret[0] = arr[0]; ret[1] = arr[1]; ret[2] = arr[2]; ret[3] = arr[3]; U512(ret) } }
Αλεχ
я не понял
Αλεχ
это для всех типов надо писать по 2 раза?
Αλεχ
компилятор не умеет только по второй имлепентации первую делать?
Маjко
Можешь сделать имплементацию для T: AsRef
-__-
Велкам ту руст. Для ops::Add вообще 4 имплементации надо писать для всех комбинаций по значению / по ссылке.
Αλεχ
Можешь сделать имплементацию для T: AsRef
https://play.rust-lang.org/?gist=44a47e0ed9303c2abf48a0fa2604826b&version=stable&mode=debug&edition=2015 ?
Vladimir
так как T может реализовывать нечто еще кроме AsRef
Маjко
Да, вполне возможно
Vladimir
(сильно абстрактный) без специализации не пройдет
Маjко
https://play.rust-lang.org/?gist=44a47e0ed9303c2abf48a0fa2604826b&version=stable&mode=debug&edition=2015 ?
https://play.rust-lang.org/?gist=c5e553826d49ff6e45a853186af801fb&version=stable&mode=debug&edition=2015
Маjко
Не AsRef, Borrow
Маjко
Ну тут есть минус что оно только для копи типов ок
Маjко
Чтобы мувать все равно надо будет писать реализацию From<Foo>
Vladimir
И еще для типов которые сам описываешь, видимо
Маjко
А у него вариантов нет
Vladimir
даже мув по большому счету - копирование. Так что запасись эфиром
Маjко
Ага, если LLVM не соптимизирует