Size: a a a

2021 February 27

EG

Emmanuel Goldstein in rust_offtopic
Всё, я впёр как работает повышение capabilities в recover
источник

EG

Emmanuel Goldstein in rust_offtopic
Ты не можешь утечь из recover-блока никакие ссылки, и на выходе возвращаешь только одну ссылку
источник

EG

Emmanuel Goldstein in rust_offtopic
И поэтому эту одну ссылку можно сделать owned, потому что все остальные ссылки исчезнут в конце скоупа
источник

EG

Emmanuel Goldstein in rust_offtopic
То есть у тебя хитрый блок, в котором ты можешь иметь несколько ссылок, но так как вытащить из него можно только одну, то она может быть какой угодно, в частности владеющей
источник

EG

Emmanuel Goldstein in rust_offtopic
И благодаря этому же можно создавать иммутабельные Send циклические структуры пошагово
Внутри recover-блока ссылка мутабельная, а на выходе ты её конвертишь в иммутабельную и больше мутабельных ссылок нет
источник

EG

Emmanuel Goldstein in rust_offtopic
Красиво
источник

EG

Emmanuel Goldstein in rust_offtopic
> If you are reading this tutorial in order, you’ve just finished the reference capabilities chapter and your brain probably hurts. We’re sorry about that. Hopefully object capabilities, while a new concept, are less mind bending.

Я уж блять надеюсь
источник

KR

Kai Ren in rust_offtopic
🙃
источник

s

suhr in rust_offtopic
Emmanuel Goldstein
То есть у тебя хитрый блок, в котором ты можешь иметь несколько ссылок, но так как вытащить из него можно только одну, то она может быть какой угодно, в частности владеющей
Cow<T>?
источник

EG

Emmanuel Goldstein in rust_offtopic
suhr
Cow<T>?
Ну мб можно эмулировать
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
suhr
Cow<T>?
по-моему там скорее циклические ссылки в регионе, судя по объяснению
источник

EG

Emmanuel Goldstein in rust_offtopic
Αλεχ Zhukovsky
по-моему там скорее циклические ссылки в регионе, судя по объяснению
Гарантируется, что не существует никаких ссылок снаружи региона внутрь региона
источник

EG

Emmanuel Goldstein in rust_offtopic
Что позволяет на выходе апгрейдить ссылку до более мощных гарантий
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
Ну я так примерно и подозревал. Но, имхо, этого не достаточно. Контр-пример сейчас не соображу 🤷‍♂️
Во-первых, можно забить все треды акторами
actor Runner
   be apply() => while true do end

actor Main
   new create() =>
       for n in Range(0, 128) do Runner() end
источник

EG

Emmanuel Goldstein in rust_offtopic
Этот код подвесит программу
источник

EG

Emmanuel Goldstein in rust_offtopic
Это не дедлок в прямом смысле слова, но
источник

EG

Emmanuel Goldstein in rust_offtopic
Pony не расставляет yield points внутри функции. Гранулярность асинхронности — обработка одного сообщения
источник

KR

Kai Ren in rust_offtopic
Там есть что-то типа актиксового сtx.wait(ctx.spawn(future))?
источник

KR

Kai Ren in rust_offtopic
Ну или можно отправить сообщение самому себе и дожидаться его ответа?
источник

EG

Emmanuel Goldstein in rust_offtopic
Kai Ren
Там есть что-то типа актиксового сtx.wait(ctx.spawn(future))?
ХЗ
Вызов behavior (метод, объявленный через be) возвращает мгновенно и ставит обработку сообщения в очередь
источник