Size: a a a

Rust — русскоговорящее сообществo

2020 August 28

Ct

Casual tears in Rust — русскоговорящее сообществo
вафель 🧇
if TypeId::of<S>() != TypeId::of<String>() && TypeId::of<S>() != TypeId::of<Box<str>>() ... && check(args) {
   abort()
}
Это специализация такая классная?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Casual tears
Это специализация такая классная?
Ага. Классная и нерабочая
источник

V

Vladimir in Rust — русскоговорящее сообществo
Хотя да, я натупил, трансмьютнуть тут не получится
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Было бы прикольно иметь интрсинк, который бы возвращал Some(TypeId) для 'static типов и None для остальных
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Как получить бесконечный стрим из Fn() -> impl Future?
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Не могу найти в доке
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Нашёл, futures::stream::unfold
источник

DS

David Sorokin in Rust — русскоговорящее сообществo
Если F: Clone, то можно расписать через монадическую связку. Только замечу, что собственно с самими растовскими фьючами не работал, но монада она и в Африке монада. Псевдокод: def repeat(f) { (f.clone())().and_then(move |()| { repeat(f) }) }
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
David Sorokin
Если F: Clone, то можно расписать через монадическую связку. Только замечу, что собственно с самими растовскими фьючами не работал, но монада она и в Африке монада. Псевдокод: def repeat(f) { (f.clone())().and_then(move |()| { repeat(f) }) }
Зачем Clone, если Fn вызывается по shared-ссылке?
источник

DS

David Sorokin in Rust — русскоговорящее сообществo
чтобы передать в замыкание, но, возможно, что в синтаксисе await это как-то можно без клонирования провернуть - без понятия про этот синтаксис еще)
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
David Sorokin
Если F: Clone, то можно расписать через монадическую связку. Только замечу, что собственно с самими растовскими фьючами не работал, но монада она и в Африке монада. Псевдокод: def repeat(f) { (f.clone())().and_then(move |()| { repeat(f) }) }
боксить придется, иначе будет бесконечного размера стейтмашина
источник

Э

Эрик in Rust — русскоговорящее сообществo
David Sorokin
чтобы передать в замыкание, но, возможно, что в синтаксисе await это как-то можно без клонирования провернуть - без понятия про этот синтаксис еще)
&T — Copy, то есть автоматически клонируется само по себе, потому что дешевле склонировать, чем передать по ссылке.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну как бы, оно и очевидно, что & — просто указатель, и его надо копировать, а не делать &&T.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну и раст не может в HKT, так что и монады в расте не всегда монады.
источник

DS

David Sorokin in Rust — русскоговорящее сообществo
На счет бесконечного размера не уверен, но надо смотреть, как именно устроена растовская фьюча. Скорее всего, стек будет во время раскручиваться, но я давно уже не заглядывал в исходники.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Для Option и Result вместо одного монадского трейта делают кучу копипаста.
источник

DS

David Sorokin in Rust — русскоговорящее сообществo
Монадность не зависит от HKT. Это другое
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
David Sorokin
На счет бесконечного размера не уверен, но надо смотреть, как именно устроена растовская фьюча. Скорее всего, стек будет во время раскручиваться, но я давно уже не заглядывал в исходники.
Растовые фьючи в стейтмашины компилируются и размер "стека" у них статически вычисляется
источник

JC

Julian =) Coffee in Rust — русскоговорящее сообществo
Эрик
Для Option и Result вместо одного монадского трейта делают кучу копипаста.
А в чем прикол монад для реюзабилити кода?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Julian =) Coffee
А в чем прикол монад для реюзабилити кода?
Как и у трейтов, не?
источник