Денис
и ему надо пойти в хэш-мапу по этому имени и найти тип.... которого там может не быть
Cat
Anton
Anton
Десереиалищирует в раст тип
Anton
Который не может не сществовать
Денис
мммммм
Anton
Денис
давай-ка я всё перефразирую, чтобы этот Type не встречался
Денис
щас
Антон
Денис
struct Stuff {
name: Name,
value: Value,
}
enum Value {
Plain(String),
Another(Rc<Stuff>),
}
и всё это хранится в словаре HashMap<Name, Rc<Stuff>>
Anton
Денис
Value::Another может ссылаться на Stuff, который ещё не десериализован
Anton
Понял твои страхи)
Cat
> "не десериализован"
ты имеешь в виду рантайм-процесс, или факт того, что serde не умеет его десериализовать?
Anton
Ну тут только вопрос к десереализации Rc
Денис
Cat
🤔
Anton
Все остальное отлично укладывается в serde
Денис
ну смотрите
Денис
я не могу напрямую такую хэшмапу сериализовать, потому что это может привести к рекурсии
Anton
Денис
поэтому во время сериализации я должен заменять все вхождения Rc<Type> на индексы хэшмапы
Денис
так что, грубо говоря,
enum Value {
Plain(String),
Another(Rc<Stuff>),
}
в сериализованном виде будет заменён на
enum Value {
Plain(String),
Another(Name),
}
Cat
ну так сделай enum ValueForSerde а потом конверти из него в Value
Cat
или я совсем чушь несу уже?
Денис
Anton
Денис
какие два процесса?
Anton
Создание карты типов и сереальзацию
Денис
ненене
Денис
карта HashMap<Name, Stuff> уже есть в памяти
Денис
мне нужно её сериализовать, а потом десериализовать в другогом приложении
Anton
Cat
Cat
(или как там его?)
Cat
чтоб прям куском памяти записать
Денис
Cat
Anton
Денис
Anton
Все пытаются на wasm ui рисовать
Anton
Дак васм вообще никоим хуем с юи нормально работать не будет
Anton
В остальном средней глухоты
Cat
Cat
так стоп ёпта
Денис
Cat
+++
Cat
относительный адрес!
Денис
а что я потом с ним буду делать?)
Денис
ахахаха
Anton
Нее
Денис
=)))
Денис
рофлы пошли
Cat
да, мне просто скучно и хреново уже, пора спать кажется
Anton
Anton
Заполнение карты типов, и десерилизация типов из карты
Anton
Лил делай промежуточный тип
Денис
ну короче промежуточный тип — мой выбор. я понял :)
Anton
Или гарантируй порядок типов в хэшмапе
Денис
всем спасибо за потраченные умственные усилия =)
Антон
Anton
С другой стороны меня не покидает ощущение что у тебя надуманна проблема ) так как типы известны
Anton
Зачем тебе rc если у тебя структура?
Денис
struct Stuff {
name: Name,
value: Value,
}
enum Value {
Plain(String),
Another(Rc<Stuff>),
}
сделай без Rc :)
Anton
А, блин рекурсивно
Anton
Туплю в 4 ночи
Денис
короче я буду делать промежуточную структуру, это несколько бойлерплейтненько, но должно сработать