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

А как ВЫ внедряете БД в свой проект? прямо тип в

структуру внедряете? или трейт?

16 ответов

13 просмотров

Шанс того, что в процессе работы над проектом сменится бд - стремится к 0, поэтому мы юзаем хардкод на конкретную базу (хотя у sqlx и выбор не велик, oracle, к сожалению, не поддерживается)

Oleh-Bozhok Автор вопроса
Артем Пятницкий
Шанс того, что в процессе работы над проектом смен...

а что за проект у вас, где используетсяя раст? а не какой ни буть go или java или js

Oleh-Bozhok Автор вопроса
Артем Пятницкий
Банк, нужно быстро и безопасно

а время разработки страдает иногда?

Arseniy Lebedev
Жалко mentat помер

А что это? Не гуглится просто

Oleh Bozhok
а время разработки страдает иногда?

Бывает, но окупается большой гибкостью и бОльшим перформансом. Сам пришел из го, где я страдал из-за нехватки всего. Хотя, конечно, иногда хочется все бросить и накидать простейший код на го, вместо борьбы с компилятором)

Oleh Bozhok
нехватка "всего" это что?)

Отвратная обработка ошибок в виде 3/4 всех строк кода это if err != nil {...} Отсутствие дженериков (самая большая боль), а как следствие всяких удобных option, result, универсальных функций, мьютексов (которые не забудешь) и тд. Отсутствие enum'ов, даже примитивных как в си, вместо этого константы юзаются Отсутствие паттернматчинга Отсутствие макросов (спорно, но растовые мне очень упрощают жизнь) Наличие nil Неявные интерфейсы с отсутствием решения пересечения названий методов Неудобные модули (во всяком случае я начинал до 1.11, сейчас лучше, но все равно привязка к url'у меня бесит) Нет unbound канала, который не буферизированный, но и не блокирующий Громоздкие лямбды Неявный захват по ссылке в лямбдах и возможности отстрелить себе ногу при спауне горутин (можно конечно просто так не делать, но никто не запрещает) Туплы очень простые, не дающие писать удобный однострочный код Нельзя вернуть переменную из {}, приходится создавать переменную блоком выше и не забыть внутри ее везде использовать Отсутствие деструктуров, а следствие неудобный во много defer, который нельзя объявить для скоупа, а не для функции Может что-то ещё, но я уже не помню

Oleh-Bozhok Автор вопроса
Артем Пятницкий
Отвратная обработка ошибок в виде 3/4 всех строк к...

да, нормальный такой список.. у меня уже по ходу проф деформация, я многого просто не замечаю) вот по поводу обработки ошибок мне сейчас пришлось таку от штуку делать match q { Ok(q) => { self.lang_cache.insert(lang.to_string(), q.id); return Ok(q.id); } Err(e) => match e { sqlx::Error::RowNotFound => { let exec_result = sqlx::query!("insert into langs(lang) values($1)", lang) .execute(&self.db) .await; .... } _ => { return Err(Box::new(e)); } }, } как сделать обработку ошибок проще?

Артем Пятницкий
Отвратная обработка ошибок в виде 3/4 всех строк к...

+ с т.з. HPC бесит GC который много кушает и заставляет городить спец. структуры данных с фиксированным числом указателей

Oleh-Bozhok Автор вопроса
Yerden Zhumabekov
+ с т.з. HPC бесит GC который много кушает и заста...

мне не приходилось работать с такой нагрузкой где GC уже напрягает...

Oleh Bozhok
да, нормальный такой список.. у меня уже по ходу п...

Ну как минимум можно убрать одну вложенность матча и написать сразу Err(sqlx::Error::RowNotFound) => {...} other => return Err(Box::new(other))

Oleh Bozhok
да, нормальный такой список.. у меня уже по ходу п...

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта