Т.Е., вот такая "магия" - валидный код, верно?

19 ответов

12 просмотров

нет

не может оно тебе дать такое скомпилить

нет, методы нужно перетащить в реализацию

Max Силинг
нет, методы нужно перетащить в реализацию

точнее, объявить (без тела) в трейте и реализовать в реализации

достижимо с помощью всякой особой магии типа struct Entity<K: EntityKind> { // common fields here specific: K::Specific, } struct Specific1; struct Specific1Fields { // fields, specific for Specific1 } trait EntityKind { type Specific; } impl EntityKind for Specific1 { type Specific = Specific1Fields; }

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿- Автор вопроса
Max Силинг
достижимо с помощью всякой особой магии типа struc...

Осталось разобраться, что делать с тайпами👀

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿
Осталось разобраться, что делать с тайпами👀

с тайпами чего? в Specific пихаются все поля, которые специфичны для конкретного репозитория т. е. в твоём случае у тебя будет, услонво struct Repository<K: EntityKind> { client: Option<Client>, elements: HashMap<i32, K>, specific: K::Specific, } trait EntityKind { type Specific; } struct ChapterSpecific { // поля, которые нужны только для Repository<Chapter> } impl EntityKind for Chapter { type Specific = ChapterSpecific; }

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿- Автор вопроса
Max Силинг
с тайпами чего? в Specific пихаются все поля, кото...

Крч, вышло что-то вот такое и оно даже компилируется.

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿
screenshot Крч, вышло что-то вот такое и оно даже компилирует...

Не принято так делать. Принято передавать генерик, а имплементацию уже для определенного баунда делать. Надеюсь, меня поправят если я не прав

Можно просто Entity<K>, а потом указывать К как E::Specific

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿- Автор вопроса
mental stability🥺✨
Можно просто Entity<K>, а потом указывать К как E:...

Не знаю, правильно ли я тебя понял, но вышло что-то такое. (Компилится и работает)

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿
screenshot Не знаю, правильно ли я тебя понял, но вышло что-т...

но вообще ты как будто бы нигде не используешь баунд Specific = E

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿- Автор вопроса

Но вот такое же работает. Т.е. всё-таки выполняется.

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿
Но вот такое же работает. Т.е. всё-таки выполняетс...

это довольно странно, но видно, что у тебя не Repository<Chapter>, а Repository<ChapterSpecific> вместо этого

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿- Автор вопроса
Max Силинг
это довольно странно, но видно, что у тебя не Repo...

Да. Я удалил уже структуру Chapter. Не нужна.

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿
Да. Я удалил уже структуру Chapter. Не нужна.

трейт с ассоциированным типом тебе тогда тоже не нужен

Asethon🏴󠁧󠁢󠁷󠁬󠁳󠁿- Автор вопроса
Max Силинг
трейт с ассоциированным типом тебе тогда тоже не н...

А без него как мне указывать, что я хочу прокинуть тот или иной Specific?

Похожие вопросы

Обсуждают сегодня

Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Ребят, есть какие нибудь мили билды, способные в шмотках с пола закрывать атлас?
Ninja Obormot
12
Карта сайта