Mike Lubinets:
Но если надо динамически, то тут только боксить, конечно.
Dima:
https://github.com/rust-lang/rust/blob/5205ae8bdc2991eecf3bfbb58ed8f56c0673e738/src/librustc/ty/mod.rs#L603-L706 вот че-то такое в итоге запилил
Mike Lubinets:
Хакерство)
Но если надо динамически, то тут только боксить, конечно.
Dima:
https://github.com/rust-lang/rust/blob/5205ae8bdc2991eecf3bfbb58ed8f56c0673e738/src/librustc/ty/mod.rs#L603-L706 вот че-то такое в итоге запилил
Mike Lubinets:
Хакерство)
GitHub
rust-lang/rust
Empowering everyone to build reliable and efficient software. - rust-lang/rust
Forwarded from Dima
с другой стороны кто из раст сообщества юзает хотя бы https://github.com/dtolnay/no-panic
GitHub
GitHub - dtolnay/no-panic: Attribute macro to require that the compiler prove a function can't ever panic
Attribute macro to require that the compiler prove a function can't ever panic - dtolnay/no-panic
Forwarded from Nikita Vilunov
ты не можешь в расте создать тип, который можно дропнуть только передав какое-то дополнительное значение
Nikita Vilunov:
например тебе нужно закрыть сессию с сервером с каким-то результатом. в линейной системе типов ты бы создал сесионный тип и функцию close(Session, &Msg)
вот тебе пожалуйста юзкейз
Анто Шка:
Ты лучше про BufWriter расскажи и про то, как он в дропе проёбывает ошибки от .flush()
Nikita Vilunov:
вообще интересно зачем ты веришь в то, что у раста линейные типы, у тебя от этого погода солнечнее?
Анто Шка:
А что там рассказывать? BufWriter в дропе дёргает .flush(), чтобы все данные из буфера записались. .flush(), разумеется, может возвращать ошибку. Но если она происходит в дропе, то ты про неё не узнаешь, вообще
например тебе нужно закрыть сессию с сервером с каким-то результатом. в линейной системе типов ты бы создал сесионный тип и функцию close(Session, &Msg)
вот тебе пожалуйста юзкейз
Анто Шка:
Ты лучше про BufWriter расскажи и про то, как он в дропе проёбывает ошибки от .flush()
Nikita Vilunov:
вообще интересно зачем ты веришь в то, что у раста линейные типы, у тебя от этого погода солнечнее?
Анто Шка:
А что там рассказывать? BufWriter в дропе дёргает .flush(), чтобы все данные из буфера записались. .flush(), разумеется, может возвращать ошибку. Но если она происходит в дропе, то ты про неё не узнаешь, вообще
Forwarded from 𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Как тут не вспомнить знаменитые слова
Новые научные идеи побеждают не потому, что их противники признают свою неправоту, просто противники эти постепенно вымирают, а подрастающее поколение, не обремененное предрассудками, усваивает новые идеи сразу. (Макс Планк)
Новые научные идеи побеждают не потому, что их противники признают свою неправоту, просто противники эти постепенно вымирают, а подрастающее поколение, не обремененное предрассудками, усваивает новые идеи сразу. (Макс Планк)
Forwarded from Nik Bond
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
structopt = { version = "0.2.18", features = [ "paw" ] }
failure = "0.1.5"Да
Forwarded from Kirill Kuzminykh
@vlad20012 Подскажи пожалуйста - у CLion вышло обновиление 2019.3, и в окне с предложением обновиться указано, что плагин Rust не совместим с новым CLion. Это правда и лучше пока не обновлять CLion?
Forwarded from ọzkriff
https://t.iss.one/rustlang_ru/257149 мне плагины вручную удалить и заново поставить потребовалось
Telegram
Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообщество
@vlad20012 у меня тут идея до 2019.3 обовилась и растоплагину поплохело:
Plugin Error
Plugin "Toml" is incompatible (target build range is 181 to 192.*).
Plugin "Rust" requires disabled "Toml".
поиск по issue пока не объяснил как себя вести надо
Plugin Error
Plugin "Toml" is incompatible (target build range is 181 to 192.*).
Plugin "Rust" requires disabled "Toml".
поиск по issue пока не объяснил как себя вести надо
Forwarded from Андрей Власов
Forwarded from Aleksandr Vershilov
Screenshot 2019-12-02 at 14.19.59.png
89.5 KB
Iceland Jack не любит, когда его ретвитят
Forwarded from A64m AL256m qn<cores> I0
"никто не любит, когда всякие нерды оскорбляют то, во что инвестировал много времени"
Forwarded from Слава
@rynok_shkurr
Какой прекрасный, восхитительный канал. Читаешь и понимаешь, что программистам платят мало.
Какой прекрасный, восхитительный канал. Читаешь и понимаешь, что программистам платят мало.
Forwarded from Αλεχ Zhukovsky
"вторые сутки гасится в карелии"/"её модель прямая"/"гоняет на низкобюджетные темы как модель"/...
Что это за язык? Я не понимаю ни слова
Что это за язык? Я не понимаю ни слова
Forwarded from Αλεχ Zhukovsky
def stateMonad[S]: Monad[State[S, ?]] = {
type StateS[A] = State[S, A]
new Monad[StateS] {
override def unit[A](a: => A): StateS[A] =
State(s => (a, s))
override def flatMap[A, B](f: StateS[A])(g: A => StateS[B]): StateS[B] =
State[S, B](
s1 => {
val (a, s2) = f.run(s1)
g(a).run(s2)
}
)
}
}Forwarded from Αλεχ Zhukovsky
Forwarded from Dmitry Rodionov
К проблеме консистентности в распределенных системах отношение имеет, чаще всего используется для выбора лидера (текущего master) с учетом подводных камней в виде отвала ноды и/или network partition. Возможно вас также заинтересует такая штука как CRDT, они используются в некоторых хранилищах (например Riak) и вроде попадались упоминания, что и в akka они тоже используются. Есть способы организовать транзакции между разными системами (в вашем случае рсубд и redis) почитать про это можно например тут. Eсть еще вариант который может вас заинтересовать: читать лог транзакций из субд и записывать данные в кеш (возможно для этого вы используете redis), это позволит видеть в кеше согласованные данные. Прошу поправить знающих коллег если в чем-то неточно выразился