Vladimir
Логично
Anton
К гадалке не ходи
Vladimir
Ну такое
Aleksey
Жизнь говно
Маjко
Жизнь говно
Есть выход!
Anton
Жизнь говно
это пять
Anton
Есть выход!
Ага, через то самое место
Vladimir
Просто суть в том, что сложно сделать апи которое будет "расширяемым" это как та статья про итераторы внешние/внутренние и их отличие
Aleksey
Маjко
В окно.
Ну это не единственный х)
Aleksey
Да выходов и правда много.
Anton
Но вообще токио реально переусложнен
В мире раста есть виндозная болезнь - обратная совместимость
Anton
он как бы нестабилен, но тех идей что наговнокодили изначально стараются придерживатся
Vladimir
Разве?
Aleksey
Ну не такой уж токио и сложный. По сути два трейта
Vladimir
Токио или фьючи?
Vladimir
Я думаю тут нужно разделять
Aleksey
Фьючи, а такио это всего лишь гибрид фьючеров и мио
Anton
tokio tls на подходе
Vladimir
Фьючи сложные потому что расширяемые. Токио сложный потому что поверх фьюч
Aleksey
Сервис не юзал, а кодек весьма няшен
Маjко
tokio-tls tokio-proto tokio-io tokio tokio-core
Vladimir
Фьючи, а такио это всего лишь гибрид фьючеров и мио
Ну вот гибридность эта немного сложна, например концепция тасков через атомик принтеры, такое себе
Vladimir
Маjко
Anton
workspace же
Vladimir
Прото вроде деприкейтед
Anton
ниразу
Anton
Прото вроде деприкейтед
это вообще самая кульная часть проекта
Vladimir
Ну хз, когда критиковали Токио, то вроде просто всегда критикуют
Anton
если быстро на коленке нужно собрать client/server для какого нить протокола
Anton
я вот не понимаю мио
Маjко
Ну хз, когда критиковали Токио, то вроде просто всегда критикуют
Ну потому что чтобы что-то предложить, надо нихуево порисерчить. Это их задача, и они сами думают как упростить это всё
Anton
у епул дата 64 бита
Anton
сокет 32 бита
Anton
отдали бы 32 под сокет 32 под токен
Vladimir
если быстро на коленке нужно собрать client/server для какого нить протокола
pub trait ClientProto<T: 'static>: 'static { type Request: 'static; type Response: 'static; type Transport: 'static + Stream<Item = (RequestId, Self::Response), Error = Error> + Sink<SinkItem = (RequestId, Self::Request), SinkError = Error>; type BindTransport: IntoFuture<Item = Self::Transport, Error = Error>; fn bind_transport(&self, io: T) -> Self::BindTransport; }
Vladimir
быстро на коленке
Маjко
Копипаст из доки
Маjко
Это быстро
Маjко
гостайл
Маjко
Раст почти готов для прода
Vladimir
Vladimir
хз мне кажется их концепция "тасков" в коре токио, слегка костыльной
Anton
https://docs.rs/mio/0.6.11/mio/
Anton
for event in events.iter() { match event.token() {
Anton
я про то что для token могли бы отдать 32 всего
Anton
не пришлось бы отдельно держать socket_t
Anton
хэндл
Anton
он бы прилетал прям в эвенте
Vladimir
ясно
Vladimir
может дело в том, что не епулом единым?
Vladimir
я сейчас не помню интерфейсы, но на вскидку select принимает вообще только фд и их нужно самому мапить на токены
Kerrigan
я понял что меня бесит в гипере
Kerrigan
надо постоянно переизобретать типы и всё переписывать
Kerrigan
без ide
Anton
про винду правда не вкурсе
Vladimir
select?
Anton
селект разве в мио есть?
Vladimir
я хз что у них есть
Vladimir
но селект де-факто дефолт
Anton
нинай селек это пипец динозаврасть и за него держатся в 17ом
Vladimir
2к17ом
Anton
в любом случае селект тормозной, для такого случая можно запилить хэшмап внутри
Vladimir
А разве епул не поддерживает пайлоад?
Anton
разницы не будет
Vladimir
Я просто если честно не сильно понимаю тебя
Vladimir
вообще да они не правы что типа не возвращают сокет, но видимо так посчитали оптимальным
Vladimir
а ты сам не можешь в токен пихать сокет?
Cuno
Evented не только сокеты могут быть же
Anton
fd
Anton
назвали бы хэндел
Cuno
может и только fd, но в таком случае нужно от пользователя либы требовать конверсию в u32, что, наверное, не очень удобно