Привет! Вангую задам вопрос на который 100 раз уже отвечали,

но не могу пока ничего найти в сети про это.
Привык в Go держать интерфейсы и реализации в отдельной папочке:

1) Тут в каждом файлике лежит по реализации, конструктору и константе с именем реализации

/database/postgres/postgres.go
/database/mysql/mysql.go

1) Тут лежит интерфейс и конструктор, который по свитчу из залетевшего в него имени реализации возвращет конструктор для нужной реализации:

/database/database.go

Но когда я пытаюсь проделать тоже самое с trait и impl в расте, т.к, при описании impl необходимо указать для какого она trait'a то получается, что мне нужно импортнуть в этот модуль и сам trait. В итоге у меня модуль с trait и конструктором импортирует модуль c impl (для конструктора), а модуль с impl импортирует модуль с trait (для собствено описания impl)

Можно ли както избежать таких вот циклических импортов, сохранив в целом подход с разбиением на модули?

4 ответов

5 просмотров

циклические импорты это не страшно крейт всё равно обрабатывается целиком

Max Силинг
циклические импорты это не страшно крейт всё равно...

я бы здесь сделал модуль с трейтом родительским, а остальные подмодулями к нему

Max Силинг
я бы здесь сделал модуль с трейтом родительским, а...

тогда в верхнем модуле будет что-то вроде mod postgres; pub use self::postgres::{PostgresDb, ...};

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

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

'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть полностью собранная база "шрифтов" - подобных символов?
Shen
9
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
кто-нибудь отправлял ли групповые медиа с entites? что бы были гипер ссылки const result = await this.client.invoke( new Api.messages.SendMultiMedia({ silen...
Kokni
3
if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
а у тя шо за бот?
Андрей
6
всем салют сегодня утро заметил что бот не может отправлять фотки по url. ручками в браузере ссылка норм открывает фотки. падает ошибка 'Bad Request: failed to send message ...
Vasya Ivanov
9
или ты хочешь сказать что это по юникоду не дефолтные буквы?
Roma
4
‌/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
Карта сайта