Dmitry
А в чем пишите? Чтоб с консолью поменьше возиться.
Tuntz
IDEA + intellij-rust
Tuntz
vscode с RLS у меня так и не завёлся
Philipp
vscode, прекрасно бегает.
Нави
jeany лучше нет)
Нави
*geany
о, да
Нави
позаменял все as_str() на &, никакой разницы не увидел, по результату совершеннно одно и тоже
Philipp
Никак не получается реализовать структуру данных, позволяющую по хешу хранить несколько типов данных в одной сущности, представляющей хранилище ключ-значение. идея была, по скольку типы известны заранее (структы Foo, Bar, Baz), хранить каждый из них отдельно в своих HashMap, и в еще одном хешмапе держать с помощью динамической диспетчеризации ссылки на данные, которыми владеют те хешмапы. ну и для организации сущностей, объединять эти хешмапы под крышей одной структуры. Вопрос: в правильную сторону ли я долблюсь?
Philipp
типов несколько, но их инстансов - N
Philipp
foo_store: HashMap<&str, Foo> = HashMap::new(); bar_store: HashMap<&str, Bar> = HashMap::new(); map = HashMap::new(); далее псевдокод тк валидного не родил: foo_store.insert("foo", Foo::new("foo")); map.insert("foo", &foo_store["foo"] as &Element);
Антон
Что-то слишком сложно
Philipp
идея - foo_store, bar_store владеют своими Foo, Bar, map - имеет ссылки на элементы в foo_store, bar_store
Philipp
что бы ссылки были на разные типы - динамическая диспетчеризация через общий для Foo, Bar трейт Element
Philipp
но в моей реализации как-то где-то застревают по времени жизни мутабельные ссылки для инсертов, и больше работать с хешами не позволяют.
Philipp
и всё это для того что бы я обращаясь к map мог получать данные разных типов.
Philipp
и тут я задумался. а зачем?
Philipp
ок, я плохо понимаю язык. тут параметрический полиморфизм я полагаю не очень удобен?
Антон
https://doc.rust-lang.org/std/collections/hash_map/enum.Entry.html
Philipp
а, ой, мерсишечки
Антон
В своё время появился, ЕМНИП, из-за проблем с лайфтаймами в том числе
Philipp
вот, сделал читаемее свой пример: foo_store: HashMap<&str, Foo> = HashMap::new(); bar_store: HashMap<&str, Bar> = HashMap::new(); map = HashMap::new(); // далее псевдокод тк валидного не родил: foo_store.insert("foo", Foo::new("foo")); map.insert("foo", &foo_store["foo"] as &Element); map.get("foo") ...
Маjко
Тогда у тебя строка будет жить столько же, сколько и вся программа, и чем больше таких строк будет, тем больше будет распухать бинарник
Все равно он их пачками в рантайме не сделает. Если это статическая строка, заданная в тексте, то конечно лучше статик Зачем без надобности плодить данные в куче?
Cuno
Ну и если все типы известны заранее, то действительно лучше enum: https://play.rust-lang.org/?gist=a301482f7109dcd247b5c89d8dc5d5a5&version=stable
Philipp
Типы объединены трейтом ровно для этих целей
Philipp
Но с енум вышло куда проще
Philipp
Спасибо)
Philipp
А положить их в один структ уже нельзя, верно?
Cuno
Кого "их"?
Маjко
Какой у него вообще юзкейс? Как-то не разу не пригождался, так и не в курсе для чего он нужен
Cuno
а что потом с Any делать, если типы неизвестны и общего трейта нет? Его же тогда не даункастнуть даже
Ну если типы вообще неизвестны и их вообще ничего не связывает, то делать нечего (и смысла в задаче нет).
պլհկ
А боксить зачем
Маjко
Чтоб получить схожий размер на стеке с трейтобжектом Box<Any>
Маjко
Но вообще не обязательно, да
Маjко
Это так, для пущего сходства
Cuno
Ну да, а если известны — то почему бы не забоксить енам?
Any несколько проще расширять. Все зависит, опять же, от юзкейса.
Cuno
Плюс кол-во типов может быть довольно большим или, например, только часть из них известна в некотором контексте.
Cuno
Допустим, HashMap<String, Any> это контекст какого-нибудь интерпретатора и мы пишем "расширение" для него.
Маjко
Окей, понял
Loo
vitvakatu готовит учебный курс по Rust и просит пройти небольшой опрос https://goo.gl/forms/IqXRdE98LOQlne7Q2 #rustycrate
Anton
Офтопик, ктонить знает хороший инструмент доя создания схем xml?
Anonymous
Altova XML че-то там
Anonymous
триал на 2 недели вроде дают
Anonymous
XMLSpy, во
LexsZero
кто-то еще пользуется xml?
Anton
Вынуждены, авиационные вебсервисы на соап
Anton
XMLSpy, во
Спасибо, цены конечно там
Anonymous
ну не могу сказать что он стоит своих бешеных денег, но инструмент всё равно добротно сделан
Loo
https://github.com/pedrocr/syncer
strcpy
linux-only?
でゲソ
Офтопик, ктонить знает хороший инструмент доя создания схем xml?
К шарпа есть неплохие штуки для генерации схем. Можно ручками накидать
Bugworm
պլհկ
заканчивайте срач линукс vs винда, пожалуйста
Маjко
@rustjerk
Маjко
Все в сад)
でゲソ
ручками много можно много чего накидать =)
Тебе на основе надо сгенерить схему или собственную намутить?
Bugworm
я форматнул в фат, надо будет чекнуть
Нави
это был какой то приступ линксо-виндовой войны??? тока что, и оглянутся не успел
Маjко
Михаил, вы ли это?
Он что, тоже Михаил?
Loo
Он что, тоже Михаил?
кто не понял. тот поймёт
Loo
Маjко
Vlad
https://www.humblebundle.com/books/functional-programming-books
でゲソ
Лол, у меня щас тут в коридоре испаньолы поют в тему
Dmitry
Чёт я попробовал разные редакторы для rust. VS code не завёлся с пинка. geany - какая-то убогая, пока не стал пробовать. idea с плагином пока лучше всех, но тоже ещё альфа, что не может не огорчать (