Dmitry
А в чем пишите? Чтоб с консолью поменьше возиться.
Tuntz
IDEA + intellij-rust
Tuntz
vscode с RLS у меня так и не завёлся
Philipp
vscode, прекрасно бегает.
Нави
jeany лучше нет)
Антон
Нави
Нави
позаменял все as_str() на &, никакой разницы не увидел, по результату совершеннно одно и тоже
Антон
Philipp
Никак не получается реализовать структуру данных, позволяющую по хешу хранить несколько типов данных в одной сущности, представляющей хранилище ключ-значение.
идея была, по скольку типы известны заранее (структы Foo, Bar, Baz), хранить каждый из них отдельно в своих HashMap, и в еще одном хешмапе держать с помощью динамической диспетчеризации ссылки на данные, которыми владеют те хешмапы.
ну и для организации сущностей, объединять эти хешмапы под крышей одной структуры.
Вопрос: в правильную сторону ли я долблюсь?
Антон
Philipp
типов несколько, но их инстансов - N
Нави
Никак не получается реализовать структуру данных, позволяющую по хешу хранить несколько типов данных в одной сущности, представляющей хранилище ключ-значение.
идея была, по скольку типы известны заранее (структы Foo, Bar, Baz), хранить каждый из них отдельно в своих HashMap, и в еще одном хешмапе держать с помощью динамической диспетчеризации ссылки на данные, которыми владеют те хешмапы.
ну и для организации сущностей, объединять эти хешмапы под крышей одной структуры.
Вопрос: в правильную сторону ли я долблюсь?
struct Mark {
ask: HashMap<&str, f32>,
}
struct Data {
bittrex: Mark,
}
let mut data = Data {
bittrex: Mark {
ask: HashMap::new(),
},
};
и потом:
data.bittrex.ask.insert("123", 1.23)
не так надо?
как раз щас так делаю
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
ок, я плохо понимаю язык. тут параметрический полиморфизм я полагаю не очень удобен?
Антон
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") ...
Cuno
Никак не получается реализовать структуру данных, позволяющую по хешу хранить несколько типов данных в одной сущности, представляющей хранилище ключ-значение.
идея была, по скольку типы известны заранее (структы Foo, Bar, Baz), хранить каждый из них отдельно в своих HashMap, и в еще одном хешмапе держать с помощью динамической диспетчеризации ссылки на данные, которыми владеют те хешмапы.
ну и для организации сущностей, объединять эти хешмапы под крышей одной структуры.
Вопрос: в правильную сторону ли я долблюсь?
Ссылки внутри структуры на данные внутри той же структуры не работают. Можно через трейтобджекты запилить: https://play.rust-lang.org/?gist=078736dcb3933f91d783bbe99e92eee1&version=stable
Есть еще Any, если типы не объединяет никакой общий трейт.
Cuno
Ну и если все типы известны заранее, то действительно лучше enum: https://play.rust-lang.org/?gist=a301482f7109dcd247b5c89d8dc5d5a5&version=stable
Philipp
Типы объединены трейтом ровно для этих целей
Philipp
Но с енум вышло куда проще
Philipp
Спасибо)
Philipp
А положить их в один структ уже нельзя, верно?
Cuno
Кого "их"?
Маjко
Маjко
Какой у него вообще юзкейс?
Как-то не разу не пригождался, так и не в курсе для чего он нужен
Маjко
պլհկ
А боксить зачем
Маjко
Чтоб получить схожий размер на стеке с трейтобжектом Box<Any>
Маjко
Но вообще не обязательно, да
Маjко
Это так, для пущего сходства
Cuno
Плюс кол-во типов может быть довольно большим или, например, только часть из них известна в некотором контексте.
Маjко
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
Вынуждены, авиационные вебсервисы на соап
Loo
Anonymous
ну не могу сказать что он стоит своих бешеных денег, но инструмент всё равно добротно сделан
Loo
https://github.com/pedrocr/syncer
strcpy
linux-only?
Anton
Bugworm
պլհկ
заканчивайте срач линукс vs винда, пожалуйста
Маjко
@rustjerk
Маjко
Все в сад)
Bugworm
я форматнул в фат, надо будет чекнуть
Нави
это был какой то приступ линксо-виндовой войны???
тока что, и оглянутся не успел
Loo
Bugworm
Loo
Маjко
Vlad
https://www.humblebundle.com/books/functional-programming-books
でゲソ
Лол, у меня щас тут в коридоре испаньолы поют в тему
Dmitry
Чёт я попробовал разные редакторы для rust.
VS code не завёлся с пинка.
geany - какая-то убогая, пока не стал пробовать.
idea с плагином пока лучше всех, но тоже ещё альфа, что не может не огорчать (
Маjко
Маjко