Size: a a a

2020 May 08

p

polunin.ai in rust_offtopic
Bogdan
Я не шибко эксперт, но вроде в хрусте Pin не для стека, а для кложур и футурок
При чем тут хруст
источник

SP

Stanislav Popov in rust_offtopic
polunin.ai
Зацените мои наркоманские мысли по поводу менеджмента памяти:
1. По умолчанию объекты хранятся на стеке.
2. Есть Copy и не-Copy типы. Первые при передаче в функции копируются всегда, вторые муваются (типо как в расте).
3. Есть Movable и не-Movable типы данных. По умолчанию тип Movable - значит при передаче в качестве аргумента он будет муваться. Если объект не Movable, значит его владение нельзя никуда передавать.
4. Предыдущий пункт нужен чтобы провернуть следующую штуку. Будет встроенный тип Ref (ссылка), который сам Movable, а внутри держит не-Movable тип (ну обычный указатель, хули). Но как вы уже поняли внутрь него нельзя поместить обычный тип так как он Movable. Для того чтобы сделать !Movable тип, можно использовать:
1. Pin, который гарантирует что данные не уйдут со стека.
2. Box, который гарантирует что данные хранятся в динамической памяти и не сдвинутся.
3. Rc.
Ну и может ещё пару умных указателей если понадобятся.
5. Итого как это будет работать: если вам необходимо передать из метода ссылку в другой метод на данные на стеке, вам нужно их припинить. Сам пин это просто маркер, то есть он зиро кост и нужен только для борроу чекера. Затем создаётся ссылка и передается в функцию. Там функция делает чё она хочет с ссылкой как с обычным объектом (как в расте).
6. Если хочется передать ссылку в другой поток то будешь огорчён потому что ссылки не Send, поэтому создавай что-то другое.
7. У меня нет никаких глобальных переменных от слова совсем, так что передать ссылку куда-то так чтобы она стала невалидной невозможно (ну на самом деле не оч так, смотри следующий пункт).

И все вроде заебись (или нет), но я хз чё делать с возвратом ссылки из метода наверх. Как проверить, закончилось время жизни внутренних данных или нет. Вообще зачем я это все придумал - чтобы избавиться от лайфтаймов. Но хз как чекать возвращаемую ссылку без лайфтаймов. Не ну я представляю как это можно сделать, но кмк это сильно удлинит время компиляции из-за проверки всего лайфтайма объекта и ссылок на него.

Оцените по шкале юзабкльности от 1 до 10
"как в расте"
источник

A

Anton 📦 ᯌ in rust_offtopic
polunin.ai
Зацените мои наркоманские мысли по поводу менеджмента памяти:
1. По умолчанию объекты хранятся на стеке.
2. Есть Copy и не-Copy типы. Первые при передаче в функции копируются всегда, вторые муваются (типо как в расте).
3. Есть Movable и не-Movable типы данных. По умолчанию тип Movable - значит при передаче в качестве аргумента он будет муваться. Если объект не Movable, значит его владение нельзя никуда передавать.
4. Предыдущий пункт нужен чтобы провернуть следующую штуку. Будет встроенный тип Ref (ссылка), который сам Movable, а внутри держит не-Movable тип (ну обычный указатель, хули). Но как вы уже поняли внутрь него нельзя поместить обычный тип так как он Movable. Для того чтобы сделать !Movable тип, можно использовать:
1. Pin, который гарантирует что данные не уйдут со стека.
2. Box, который гарантирует что данные хранятся в динамической памяти и не сдвинутся.
3. Rc.
Ну и может ещё пару умных указателей если понадобятся.
5. Итого как это будет работать: если вам необходимо передать из метода ссылку в другой метод на данные на стеке, вам нужно их припинить. Сам пин это просто маркер, то есть он зиро кост и нужен только для борроу чекера. Затем создаётся ссылка и передается в функцию. Там функция делает чё она хочет с ссылкой как с обычным объектом (как в расте).
6. Если хочется передать ссылку в другой поток то будешь огорчён потому что ссылки не Send, поэтому создавай что-то другое.
7. У меня нет никаких глобальных переменных от слова совсем, так что передать ссылку куда-то так чтобы она стала невалидной невозможно (ну на самом деле не оч так, смотри следующий пункт).

И все вроде заебись (или нет), но я хз чё делать с возвратом ссылки из метода наверх. Как проверить, закончилось время жизни внутренних данных или нет. Вообще зачем я это все придумал - чтобы избавиться от лайфтаймов. Но хз как чекать возвращаемую ссылку без лайфтаймов. Не ну я представляю как это можно сделать, но кмк это сильно удлинит время компиляции из-за проверки всего лайфтайма объекта и ссылок на него.

Оцените по шкале юзабкльности от 1 до 10
это новый язык или что
источник

S

Sooqa in rust_offtopic
map(Optional<String>.some("1"), using: {
       Int($0) ?? 0
   }, outputType: Optional<Int>.self)
источник

S

Sooqa in rust_offtopic
ахуели? ахуели
источник

A

Anton 📦 ᯌ in rust_offtopic
Sooqa
map(Optional<String>.some("1"), using: {
       Int($0) ?? 0
   }, outputType: Optional<Int>.self)
свифт?
источник

B

Bogdan in rust_offtopic
polunin.ai
При чем тут хруст
Ну а при чем тут пин тогда?
источник

B

Bogdan in rust_offtopic
+ таки асинки там будут у тебя?

Как я понял без гц язычек
источник

p

polunin.ai in rust_offtopic
Anton 📦 ᯌ
это новый язык или что
Ну я пишу яп, и споткнулся на месте как менеджить память. ГЦ не хочу, ненавижу, растовая смесь афинных типов с регионами требует большого количество телодвижений для пруфов компилятору о правильности программы.
источник

S

Sooqa in rust_offtopic
Anton 📦 ᯌ
свифт?
даю язык будущего ставьте клас сто согласен
источник

A

Anton 📦 ᯌ in rust_offtopic
polunin.ai
Ну я пишу яп, и споткнулся на месте как менеджить память. ГЦ не хочу, ненавижу, растовая смесь афинных типов с регионами требует большого количество телодвижений для пруфов компилятору о правильности программы.
ну доказывай тогда теоремы на других языках почему твоя парадигма правильная
источник

p

polunin.ai in rust_offtopic
Bogdan
Ну а при чем тут пин тогда?
Ты прочитал?
Без пина нельзя взять ссылку на объект, потому что нельзя взять ссылку на Movable данные
источник

B

Bogdan in rust_offtopic
polunin.ai
Ты прочитал?
Без пина нельзя взять ссылку на объект, потому что нельзя взять ссылку на Movable данные
Я только первые 3 пункта прочел и пошел сраться в коменты) все как обычно)
источник

A

Anton 📦 ᯌ in rust_offtopic
Sooqa
даю язык будущего ставьте клас сто согласен
ну свифт классный
источник

S

Sooqa in rust_offtopic
polunin.ai
Ты прочитал?
Без пина нельзя взять ссылку на объект, потому что нельзя взять ссылку на Movable данные
не используй ров память, используй виртуальную память
источник

p

polunin.ai in rust_offtopic
Sooqa
не используй ров память, используй виртуальную память
Что за виртуальная память? Ты заебал придумывать термины
источник

S

Sooqa in rust_offtopic
polunin.ai
Что за виртуальная память? Ты заебал придумывать термины
лол ты правада не слышал или тролишь меня
источник

S

Sooqa in rust_offtopic
источник

p

polunin.ai in rust_offtopic
Как это относится к тому что я писал?
источник

p

polunin.ai in rust_offtopic
Это относится к ОС больше
источник