Chat for Rust developers FAQ: https://gist.github.com/listochkin/c81c198a2b7b044a0dc5
People
Repo info
Activity
Mar 27 2015 20:26
User @sudodoki banned @doneck-russia from this room
Mar 19 2015 20:58
User @mr-mig banned @pgr-ru from this room
Mar 15 2015 01:09
User @mr-mig banned @putin-hero from this room
Mar 15 2015 01:09
User @mr-mig banned @stepan-bendera from this room
Ingvar Stepanyan
@RReverser
чуваки, а є якийсь аналог WeakMap в Rust?
ну в плані асоціювати інформацію з об’єктами, але без стороннього HashMap (так як лукапи будуть часто і не хочеться на них втрачати перфоманс, як власне і реалізовувати Hash для всього підряд)
Ingvar Stepanyan
@RReverser
хоча це мабуть малореально в статично типізованій мові, так як пам’ять під додаткові дані не зарезервована...
Андрей Листочкин (Andrey Listochkin)
@listochkin
WeakMap в Rust?
@RReverser а как ты себе это представляешь без GC?
але без стороннього HashMap
WeakMap внутри как HashMap и работает в языках типа JS, Java, C#
но в общем нет, разве что городить свой аллокатор и предусматривать в нем механизм для хранения метаданных
Ingvar Stepanyan
@RReverser
WeakMap внутри как HashMap и работает в языках типа JS, Java, C#
так в тому-то справа, що ні
@listochkin
в JS він просто додає приховану проперті на об’єкт
що можливо якраз за рахунок того, що об’єкти аллокуються з запасом (ну і що GC може їх вільно переміщати в пам’яті)
і далі звернення по weakmap уже займає O(1)
хотілось би щось подібне
Andrii
@j2ko
@RReverser а можеш навести приклад де б в Rust було б зручно мати WeakMap? Просто не можу зрозуміти що саме потрібно.
в цілому, щоб асоціювати кастомну інформацію з кучою об’єктів отриманих із зовнішніх крейтів
з подальшим швидким отриманням цієї інформації
weakmap це робить дуже ефективно, в Rust не схоже що є механізми для цього
(як власне і в C і загалом)
Andrii
@j2ko
на думку спадає лише те що після отримання дерева з зовнішнього джерела тобі треба його "перезібрати" і покласти в ноди розширену структуру яка б уже містила додаткову інфу.
якщо дерево формується рідко а опрацьовується часто то просідання по перформенсу не буде сильно замітним.
Ingvar Stepanyan
@RReverser
ну про це писав - в принципі можливо, але теж якось купа зайвих врапперів..
і дорожче, і працювати мабуть не дуже зручно буде
Andrii
@j2ko
тут ще треба знати що собою являють ноди і що за додаткова інфа для них провайдиться - можливо тоді вийде більш точніше підібрати рішення
Ingvar Stepanyan
@RReverser
в тому і проблема, що хочеться чогось загальнішого :)
взагалі це ноди в AST-дереві, мені треба при першому проході позбирати оголошення змінних і до яких блоків / функцій вони належать, щоб далі основний прохід компілятора міг діставати в залежності від блоку, в якому знаходиться, які змінні в ньому є