Vladimir
А в го вроде от сегментирования отказались Update: нет, не отказались.
Ты вносишь смуту, если сейчас там один стек, то вернёмся к пункту 1. 1. Если компилятор помещает в гц только те объекты что возвращаются с функций, то как быть с реалокацией стека?
Vladimir
А как работает тогда аналог let x =... let z =&x; ... realloc_stack()
Vladimir
https://github.com/alexcrichton/stacker/blob/master/README.md
Просто я слышал что в корутинах от Миа( или как там) это было одной из проблем
Слава
1) не знаю. Возможно, там возврат объекта из функции отслеживается прямо во время компиляции, и память выделяется сразу на куче. Если же нельзя однозначно сказать, вернётся объект или нет, то в кучу его можно просто скопировать, при обнаруженном возврате.
Alexander
Alexander
Что оно от меня хочет?
Alexander
Ах, кажется что начал понимать. Там не фьючу оно хочет, но почему.
Денис
юзай futures-retry ^_^
Денис
ну на самом деле у tokio-retry и futures-retry несколько разные кейсы
Alexander
юзай futures-retry ^_^
Почему futures-retry а не tokio-retry?
Денис
потому что я автор первого =)))
Денис
ну ваще зависит строго от юз-кейса
Alexander
Ну юз-кейс простой - если соединение например слетело - повторить.
Alexander
С ходу больших отличий между двумя не вижу.
Alexander
Твоё как-то красивее выглядит, но зато другое больше скачивают. А по факту похоже.
Денис
это потому что я своё не пиарил нигде, а второе — это ж токио! =) futures-retry предполагает, что если нужна сложная логика ретраев (непостоянный тайм/аут и т.п.), то юзер должен сам это пилить, благо RetryPolicy там достаточно абстрактная; но для простых юз-кейсов, когда надо просто либо повторить сразу, либо повторить с таймаутом, либо пропустить ошибку дальше (в зависимости от типа ошибки), оно сразу работает из коробки + очень легко навешивается на стримы в то время как tokio-retry заточен на более сложные юз-кейсы, и из коробки даёт тебе возможность решить твою задачу, например, но это даётся ценой более сложного интерфейса + нет клёвого экстеншена для стримов :) мне кажется твой юзкейс полностью подходит для tokio-core, собственно он прям в доке и описан
Денис
смотрю на твою ошибку, client это должен быть не фьючер, а функция, производящая фьючеры
Alexander
это потому что я своё не пиарил нигде, а второе — это ж токио! =) futures-retry предполагает, что если нужна сложная логика ретраев (непостоянный тайм/аут и т.п.), то юзер должен сам это пилить, благо RetryPolicy там достаточно абстрактная; но для простых юз-кейсов, когда надо просто либо повторить сразу, либо повторить с таймаутом, либо пропустить ошибку дальше (в зависимости от типа ошибки), оно сразу работает из коробки + очень легко навешивается на стримы в то время как tokio-retry заточен на более сложные юз-кейсы, и из коробки даёт тебе возможность решить твою задачу, например, но это даётся ценой более сложного интерфейса + нет клёвого экстеншена для стримов :) мне кажется твой юзкейс полностью подходит для tokio-core, собственно он прям в доке и описан
Я только последнее не понял - причем тут tokio-core. Но если б у тебя там была функция retry - было бы ещё больше похоже.
Alexander
Alexander
Приплыли :(
պլհկ
>BTC_USD
Anton
не шаришь
VCL
Привет всем, пытаюсь поэксперементировать с токио, но такая проблема) Уже мозги болят. Как заставить работать этот простой код?) https://play.rust-lang.org/?gist=16b6c051eb246f3258577d995c5bc533&version=stable&mode=debug&edition=2015
Alexander
Ля, и что делать.
Roma
Ля, и что делать.
смотреть чо в корке?
Alexander
смотреть чо в корке?
Как-то я думал что оставил это 15 лет назад.
Αλεχ
Братишки, подъясните полз
Αλεχ
The problem with the existing cause API is that the error it returns is not 'static. This means it is not possible to downcast the error trait object, because downcasting can only be done on 'static trait objects (for soundness reasons).
Αλεχ
почему static только?
Αλεχ
как можно вернуть статик ссылку на созданный объект?
Денис
Спасибо, я уже 30 минут гуглил ։D
нзч, очень советую заходить в доки и смотреть, что там есть )
VCL
нзч, очень советую заходить в доки и смотреть, что там есть )
Хорошо, в следующий раз будут менее тупые вопросы)
Alexander
move || убрал - в кору не падает, но что-то и не переподписывается пока. Сам виноват, починил.
Αλεχ
блин, никто не знает?
Anonymous
как можно io::stdin().read_line зафейлить, чтоб expect отработал?
Cat
как можно io::stdin().read_line зафейлить, чтоб expect отработал?
https://stackoverflow.com/questions/22439841/how-to-test-stdin-read-error Или Broken pipe
kalloc
то, что может использовать потенциал семантики языка и производительности clang
Alexander
@mexus futures-retry лучше - они могут без таймера сразу запустить. tokio-retry не может.
Alexander
но что-то и тут я запнулся: https://gist.github.com/rust-play/526dab5b940e02c2f13e37141176e9b3
Alexander
хз толи для старого core не работает, вижу что в 'static разница, но почему именно так - хз
Alexander
ага, конечно лучше если там features_retry есть.
Денис
Alexander
хм, буду думать как одно в другое
Денис
https://gitlab.com/mexus/futures-retry/blob/master/examples/tcp-client.rs вот пример с futures
Денис
Я дальше спать :)
Alexander
thx
Alexander
блин, оно мне фьючу страима возвращает
Alexander
https://docs.rs/tokio-tungstenite/0.5.1/tokio_tungstenite/fn.connect_async.html
Alexander
как стрим во фьючу - понятно, а вот наоборот ...
Alexander
1) руками poll писать - не вариант конечно
Alexander
прорвался, спасиб за наводку.
Alexander
собралось, но не ретраится :(
саша
Кстати, кто-то, помню, говорил, что футура не монада ибо результат применения комбинатора другого типа. Но если размышлять в рамках экзистенциальных типов, то всё ок же, не?
𝙽𝚒𝚌𝚔
Не совсем. У бинда тип должен быть m a -> (a -> m b) -> m b что неявно означает для любых m a b. И плюс три закона также выполнены для любых m a b. И этот m одинаковый везде: и в сигнатурах и в законах, что для футуры я не уверен что справедливо.
𝙽𝚒𝚌𝚔
лодочник утверждал, что нет
саша
От монады требуется только то, чтобы она была категорией по операции композиции >=> морфизмов a -> m b
𝙽𝚒𝚌𝚔
ну или так. Стрелка Клейсли и бинд эквивалентные операции
𝙽𝚒𝚌𝚔
одно выражается через другое
саша
ну или так. Стрелка Клейсли и бинд эквивалентные операции
Так, стоп. Стрелка Клейсли - это a -> m b, бинд - это m a -> (a -> m b) -> m b
саша
дефайн эквивалентность
𝙽𝚒𝚌𝚔
Да, прости, что то туплю: композиция Клейсли и бинд - эквивалентны
саша
хотя есть один большой минус у монад перед async/await. В async/await можно писать циклы не используя рекурсию. В монадах такое не пройдёт.
𝙽𝚒𝚌𝚔
Но всё-таки, теперь я не понимаю, почему m в случае футуры одинаковый... Возьмём например let f3 = f1.then(f2). Они здесь все разные, тип f3 будет отличаться от f1 и f2, нет?
саша
С точки зрения теорката никаких противоречий
саша
Хотя тип значения фьючи может и отличаться - да
𝙽𝚒𝚌𝚔
Ну да, у нас просто обобщённый impl, и для него выполнены законы.