Anonymous
Это откуда?)
https://knowyourmeme.com/memes/press-f-to-pay-respects
Anonymous
Anton
кто нить уже юзает tower ?
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
Упс, я думал это для привязки к окончанию предыдущей футуры, спасибо
(((Sergey(not seresha))
Тут тоже нужен бот
red75prime
(((Sergey(not seresha))
Как в джерке
Vladimir
Vladimir
По этому разница есть
red75prime
По этому разница есть
И в чём-же эта разница заключается? В одном случае каждое замыкание выполнятся по своему таймеру, в другом случае каждое замыкание выполняется по своему таймеру.
Vladimir
Не будет двух замыканий в кейсе мержа
red75prime
И куда же они денутся? В исходном коде замыкания (это то, что с двумя вертикальными палочками |_| blalba) есть, а после merge они исчезают? И в том и в другом случае в event loop крутится одна таска, которая выполняет два разных замыкания. Хватит уже придумывать.
Слава
Ну мерж же не так работает, мерж объединяет два аутпата стримов, в итоге у тебя остаётся одно замыкание.
Если человек хотел просто поместить их в токиевский ивентлуп - то жоин подходит больше, если он хотел поверх стрима, вне Токио навернуть ивентлуп каких-то своих событий (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]
запятая (должна быть точка с запятой)
Αλεχ
бля)
Αλεχ
спасибо
Sergey
Αλεχ
а итераторы без векторов бывают?
Αλεχ
ну то есть я знаю, что у меня будет 32 элемента
Αλεχ
и я хочу массив
Αλεχ
щас приходится делать цикл и заполнять массив, а хотелось бы map/fold/...
պլհկ
ты знаешь, а компилятор нет
Sergey
պլհկ
VLA нет => нельзя
Adam
Можешь сделать ньютайп с массивом внутри и для него FromIterator заимплементить. Если кол-во элементов не совпадает - кидаешь панику.
Αλεχ
ну вот думаю что-то такое
Αλεχ
хотя не получится
Αλεχ
итератор уже теряет инфу о своей длине
Αλεχ
короч забавно
Αλεχ
я этим занимался в шарпах лет 5 назад
Αλεχ
и все вернулось туда же)
Сергей
какбе https://doc.rust-lang.org/std/iter/trait.ExactSizeIterator.html
Αλεχ
клево
Vladimir
плюс еще можно по ходу дела паникнуть
Vladimir
когда ты вдруг понял, что итератор кончился, или что массив оказался короче
պլհկ
чего только не сделаешь, чтоб фор луп не использовать
պլհկ
😊
Loo
Маjко
պլհկ
Маjко
А, сори, у меня контекст перескочил с разговора про ивентлупы
Маjко
Αλεχ
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 имплементации надо писать для всех комбинаций по значению / по ссылке.
Маjко
Vladimir
Vladimir
так как T может реализовывать нечто еще кроме AsRef
Маjко
Да, вполне возможно
Vladimir
(сильно абстрактный) без специализации не пройдет
Маjко
Маjко
Не AsRef, Borrow
Маjко
Ну тут есть минус что оно только для копи типов ок
Маjко
Чтобы мувать все равно надо будет писать реализацию From<Foo>
Vladimir
И еще для типов которые сам описываешь, видимо
Αλεχ
Маjко
А у него вариантов нет
Vladimir
даже мув по большому счету - копирование. Так что запасись эфиром
Маjко
Ага, если LLVM не соптимизирует