Daniil
мне раст нравится, но я пока не распробовал. Попробую пару c++ проектов переписать и пойму наверное прелести раста
Αλεχ
Αλεχ
всегда помни, что в языках типа жабы копирование в хип на каждый чих
Αλεχ
так что хуже чем там ты точно не делаешь
Cat
Cat
копирование указателя, я правильно понял?
Αλεχ
а в случае структур они просто каждый раз копируются и все
Αλεχ
целиком
Cat
целиком
(предлагаю остановиться)
Αλεχ
Αλεχ
а не про класс
Daniil
последний моментик и я вроде все:
pub fn prepare_table(files_clients:Vec<(String, Vec<Client>)>) -> Vec<(String, Vec<ExClient>, f32)> {
let mut write_data = Vec::new();
let mut exclients = Vec::new();
let mut total:f32 = 0_f32;
for file_clients in files_clients {
for client in clients.clone() {
let exclient = ExClient {
...
};
exclients.push(exclient)
}
write_data.push((file.to_string(), exclients, total))
}
write_data
}
value used here after move
Как тут все по красоте сделать? Я же вроде пушу в вектор а не перемещаю его
Αλεχ
https://www.reddit.com/r/rust/comments/96ghod/i_tried_rust_and_heres_my_opinion_of_it/?utm_source=reddit-android
Маjко
Маjко
Была функция, но выпилили
Маjко
Маjко
Маjко
Маjко
Маjко
Хуево что нельзя заждойниться с таймаутом
Маjко
Если б было можно, можно было бы и панику перехватить
Маjко
Маjко
Маjко
Почему бы и нет
Маjко
Маjко
Berkus
Daniil
Что поделать) Никто не говорил что будет просто
Ivan
Vladimir
Vladimir
Vladimir
Anonymous
https://twitter.com/mononcqc/status/999471339474968576?s=19
Pavel
Если сейфовый раст, то он какраз оберегает от race condition, и этим апи либы какраз и доставляет дискомфорт. Если все писать в ансейфе, то тогда разницы с сихой не будет
я с тобой целиком согласен. я больше про боль того что автор либы не подумал о том что тебе нужно. а ты «пропатчить» / расширить изменить не можешь (в условиях правил раста) и вот тут боль: или форкаешь и поддерживаешь свой форк или убеждаешь автора что это нужно (а тут как повезёт и не факт что это многим нужно и может автору нужно лишь архитектуру переделать, чтоб тебе можно было как пользователю впилиться, а автор так может не думать / у него нет времени, а у тебя тоже как бы не много и т.д.) и в общем все сводится к тому что или пиши сам или ищи как изъебнуться чтоб переиспользовать где натыкаясь на компилятор и его правила, а где на решения автора. А про другие экосистемы - там менее строго это сделано и выработаны почти стандартизированные костыли 😆 что дают обойти многие ограничения
Vladimir
Да я к тому, что если нужно Костыльный обход, можно завернуть рц в Нью тайп, и сделать unsafe impl Send. И будет тоже самое что в с++.
Маjко
Что сейчас из модного есть в key-value хранилищах?
Интересуют встраиваемые базы
Маjко
Желательно pure rust или хотя б вменяемые биндинги
Marat
Маjко
> sled likes eating data! it's alpha
Отлично! Игрушечному проекту игрушечная БД
Маjко
А вообще нагрузка по хранению высокая будет сравнительно, не хотелось бы
պլհկ
rkv
Vladimir
Маjко
rkv
API довольно жуткий, но сойдет
Маjко
Маjко
Просто данные перекачивать долго, если проебутся
պլհկ
Ну есть просто lmdb крейт
Маjко
Маjко
Marat
Вообще конечно для бд я бы проверенное брал rocksdb там
Маjко
Еще смотрю на rocksdb и ее биндинги
Маjко
Маjко
Собстна, наверноее ее и возьму, не рокетсайнс, но в рабочем проекте она, надо поиграться перед тем как в прод лезть
Vladimir
Ну мы юзаем
Vladimir
Нам норм
Маjко
Блокчейнеры тоже?
Vladimir
А след это не то, что бинкод поверх файлов?
Vladimir
Ага
Marat
Marat
Бинкод самому надо наворачивать
Vladimir
Не круто
Vladimir
Жду когда бинкод навернут для джавы
Vladimir
Или есть какой-то формат аналог бинкода для жавы/жс/питона?
Vladimir
Marat
Между языками лучше какой-нибудь protobuf юзать
Vladimir
Протобаф не хочет кастомные типы статического размера
Alexander
Ещё https://en.wikipedia.org/wiki/CBOR есть например. Но там тоже оверхед будет...
Alexander
https://capnproto.org/ - идеал! 😂
Маjко
Alexander
Alexander
Очевидно, что невозможно одну и ту же структуру передавать между разными языками без сериализации/десериализации где-нибудь. Поскольку у них разный memory layout.
Vladimir
Vladimir