172 похожих чатов

Есть какой-то живой di в расте нынче? посмотрел teloc, shaku

и waiter
все три имеют многолетние ишью без комментов, ласт релизы пару лет назад и прочие атрибуты мертвых проектов

пока взял шаку как самое живое из мертвого, но хотелось бы не играть в некромантию и пользоваться нормальными инструментами

35 ответов

54 просмотра

А что именно вы хотите получить от данного di решения? Сам di контейнер же вроде штука тривиальная, подойдет любая немутабельная структура, из которой торчат нужные зависимости.

Александр-Ушаков Автор вопроса
S B
А что именно вы хотите получить от данного di реше...

бэк на аксуме, в данный момент общие разделяемые ресурсы по типу пула коннектов к бд засунуты в глобальный стейт само приложение по привычке поделил на слои контроллер, сервис, репозиторий вот хочу между слоями через DI инжектить собственно, на шаку я так уже сделал, смущает только его мертвость сейчас в глобальном стейте еще лежит di контейнер, из него в хендлерах получаю ссылку на конкретную реализацию нужного трейта-сервиса, с ней уже работаю в сервисе аналогично с реализацией репозитория

Александр Ушаков
бэк на аксуме, в данный момент общие разделяемые р...

просто создать немутабельную структуру, например, Depencency, и запихнуть в нее все, что нужно и тянуть из нее все — это не вариант в Вашем случае? P.S. сразу уточнение: мне ответ на Ваш вопрос самому интересен. Я просто уточняю чем простое решение хуже левой зависимости (мертвой в данном случае)

Александр-Ушаков Автор вопроса
S B
просто создать немутабельную структуру, например, ...

можно, но это по сути будет почти тем же, что я сейчас через шаку делаю, только извлеченное из-под его капота имхо проблема тут как минимум одна - будет один супержирный метод на создание инстанса этой структуры условно говоря, разрастется приложение до 20 модулей (назовем сочетание хендлер-сервис-репа так) это надо будет 20 раз создавать все три сущности вот так и пихать в эту структуру в одном месте некрасиво

Александр Ушаков
можно, но это по сути будет почти тем же, что я се...

как думаете, такой вариант решит проблемы? - создать Dependency структуру, которая держит все зависимости/фабрики и пр. - каждый модуль ожидает свой трейт для зависимостей - структура Dependency реализует все трейты модулей В таком варианте сам модуль ограничен трейтом, но под капотом все равно лежит полная структура Dependency.

S B
как думаете, такой вариант решит проблемы? - созда...

Такое вообще не получится сделать нормально

S B
как думаете, такой вариант решит проблемы? - созда...

А зачем тогда передавать эту dependency и реализовывать ей трейты, если можно передать её поле

Rustam
God object получился

у ребят из pointfree.co есть аргументы в пользу такого решения, но это из мира iOS и swift. Структура немутабельная и да, она God object. Зато с точки зрения когнитивной нагрузки все очень просто.

S B
у ребят из pointfree.co есть аргументы в пользу та...

Зато с точки зрения перекрывающихся методов всё очень плохо

S B
у ребят из pointfree.co есть аргументы в пользу та...

И что насчёт чего-то рабочего на этом вот?

Victor
А зачем тогда передавать эту dependency и реализов...

возможно я тут не прав и мои аргументы из мира мобайла (iOS/Flutter), но обычно это приводит к тому, что родительский модуль должен получить зависимости для всех потенциальных подмодулей, которые он может порождать

Пух
И что насчёт чего-то рабочего на этом вот?

https://github.com/pointfreeco/swift-dependencies -- у этих ребят достаточно грамотно все и есть куча рабочих примеров. Даже если учесть, что это не раст, стоит кмк глянуть в их подход

S B
https://github.com/pointfreeco/swift-dependencies ...

Не заметил что-то условного проброса импл трейтов наружу

Пух
Не заметил что-то условного проброса импл трейтов ...

я свой вариант предложил. Сам думаю как это сделать на своем проекте. Потому участвую в обсуждении не чтобы что-то умное ляпнуть, а чтобы самому получить правильный ответ )

S B
я свой вариант предложил. Сам думаю как это сделат...

В любом случае я не помню адекватных способов задерайвить произвольный трейт для своего типа

Rustam
ambassador не подойдет?

Надо чтобы кто-то повесил атрибуты на все трейты

Александр Ушаков
бэк на аксуме, в данный момент общие разделяемые р...

А вы не рассматривали вариант засунуть пул коннектов в статик переменную через lazy_static и потом уже из любой части бэкенда можно будет использовать эту переменную для получения подключения? Или такой подход в чем то неправилен?

Александр-Ушаков Автор вопроса
Huterok
А вы не рассматривали вариант засунуть пул коннект...

у меня там не только пулл коннектов, еще конфиг приложения и разные другие вещи в теории можно конечно, но не вижу плюсов, так как и аксум, который я использую, и актикс тот же из коробки предоставляют интегрированный с ними глобальный стейт с инжектом в хендлеры

Александр Ушаков
у меня там не только пулл коннектов, еще конфиг пр...

А вдруг какая то часть стейта в принципе не нужна в определенном хендлере? Или например надо будет заинжектить ещё один стейт, с какими то не глобальными данными?

https://github.com/microsoft/cookiecutter-rust-actix-clean-architecture/blob/main/docs/onion-architecture-article.md Что-то такое получилось?

Александр-Ушаков Автор вопроса
Roman D
https://github.com/microsoft/cookiecutter-rust-act...

ну почти есть расхождения в структуре проекта, но суть похожа я эту статья не видел, просто подумал, как лучше свой опыт из спринга адаптировать под раст и имеющиеся либы

Александр Ушаков
ну почти есть расхождения в структуре проекта, но ...

Ну там не только статья в репе, но и темплейт. Думаю показательно, что даже яростные адепты DI - Microsoft не сделали его тут)

Александр-Ушаков Автор вопроса

ну и пусть если опираться на «так у гугла/амазона/майкрософта», то далеко не уедешь нужно по конкретным случаям судить

Александр Ушаков
ну и пусть если опираться на «так у гугла/амазона/...

Не совсем про это. Уверен, что они очень хотели DI, просто не сумели красиво реализовать на расте, так же как можно это сделать в их шарпе

Александр-Ушаков Автор вопроса
Roman D
Не совсем про это. Уверен, что они очень хотели DI...

да, о том и речь, что красивого di в расте я не видел, сколько ни искал думать надо, по другим компилируемым языкам покопаться на предмет примеров и тд

Александр Ушаков
бэк на аксуме, в данный момент общие разделяемые р...

Тут ключевая ошибка в изначальном посыле: "само приложение по привычке поделил на слои контроллер, сервис, репозиторий вот хочу между слоями через DI инжектить". Не надо пытаться реализовывать свои сомнительные привычки из языков совсем другого класса (созданных для безопасной работы дешёвыми и малоквалифицированными разработчиками) в Rust или C++. Тут совсем другой мир. Лучше посмотреть как здесь принято делать. >и хочется что-то аналогичное спрингу в этом плане придумать Не знаю кто как, а я вот наоборот максимально расстроюсь, если в Rust начнут тащить гадости в стиле спринга. >мне вот непонятно что теряют системщики, если в расте появятся более развитые тулзы для того же бэка? Спать меньше станут от религиозной ярости или что? У меня команда пишет на Расте и бэк и фронт и ещё микроконтроллеры (с которыми общается как раз бэк). Причём бэк на порядок сложнее (одно требование реалтайма чего стоит) привычных всем CRUD'ов. Так вот, во всём этом сложном проекте (из множества связанных crate'ов и бинарников, работающих на принципиально разных платформах и общающихся между собой) нигде нет этих ваших десятков никчемных архитектурных слоёв, DI и прочей Java головного мозга. При этом всё работает с отличным быстродействием и код имеет простую и стройную структуру. Так что может это просто кто-то не умеет на самом деле готовить бэк? )

Alex
Тут ключевая ошибка в изначальном посыле: "само пр...

а что по требованиям реалтайма? у вас ОСРВ используется? или имеется в виду реалтайм в обиходном значении?

Alex
Тут ключевая ошибка в изначальном посыле: "само пр...

расскажи пожалуйста про реалтайм на беке. Ни разу не слышал подобного

Rustam
а что по требованиям реалтайма? у вас ОСРВ использ...

Реалтайм в настоящем понимание есть в микроконтроллерах и там вообще никаких ОС нет в принципе. А на бэке да, реалтайм в человеческом понимание: отсутствие видимых глазу задержек между переданной командой и отображением её исполнения в транслируемом видеопотоке высокого качества. Но на самом деле реализовать такое даже намного сложнее чем истинный жёсткий реалтайм в МК, потому что сочетание больших объёмов передаваемых данных с нестабильным каналом связи максимально затрудняет задачу.

Alex
Реалтайм в настоящем понимание есть в микроконтрол...

«Я иду как глубокий старец, узревший вечное, прикоснувшийся к божественному, сам стал богоподобен и устремлён в это бесконечное» (c)

AMD EPYC™ 9684X
«Я иду как глубокий старец, узревший вечное, прико...

если вдруг было непонятно из контекста, то я писал про вообще, а про конкретный проект. Что в нём имеется область реализации жёсткого реалтайма, но она находится не в бэке. И делается это всё на МК настолько просто, что гордиться там абсолютно нечем. В отличие от "ненастоящего" реалтайма в бэке, где уже требовалась сложная работа.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта