Αλεχ
длиной не более 32 байт
Αλεχ
и его использовать просто как индекс
Αλεχ
тогда кстати изи, коллизий не будет
Αλεχ
точнее они будут в клиентском коде, но тут уже ССБЗ
Αλεχ
понятно почему так в солидити сделано теперь))
Loo
https://github.com/avito-tech/bioyino/blob/master/src/bigint.rs красота
ну закомментил чувак код в модуле
Loo
чо такого то
Alex
чо такого то
ну можно было в lib.rs закоментить )
Alex
это да. но не пофиг ли
ну такое, мне кажется это тоже о чем то да говорит.
Loo
?
Alex
о качестве кода наверное все же говорит
Alex
хотя хз конечно
Berkus
о чём это говорит:
о том что он не взял готовый bigint?
Loo
что ли
კაცი
шта
точно модератор)
Berkus
что вы блин несёте, я иногда думаю что на каком-то другом языке говорю что ли, вам на Go будет понятней?
კაცი
а ты про тараса не знаешь что-ли?
Berkus
а ты про тараса не знаешь что-ли?
Тарас это имя, украинско-белорусское, а что
კაცი
всё ясно короче)
Vladislav
Объясните глупому, что тут за магия твориться: pub type Result<T> = std::result::Result<T, Error>; куда Error девается?
Антон
Объясните глупому, что тут за магия твориться: pub type Result<T> = std::result::Result<T, Error>; куда Error девается?
Он остаётся. Это просто объявление синонима с зафиксированным типом ошибки
Vladislav
А.
Vladislav
спасибо
Vladislav
Я правильно понимаю, что для того, чтобы работал оператор "?", то везде должне быть одинаковый тип Error?
Vladislav
а есть пример?
Vladislav
а то я у себя использую книжный Box<Error>, а у serde свой Error
kitsu
а есть пример?
https://play.rust-lang.org/?gist=e4c9b48bf1438d207034403c0a763078&version=stable&mode=debug&edition=2015 чот хреново у меня с примерами, лучш задавай направляющие вопросы
Vladislav
https://play.rust-lang.org/?gist=e4c9b48bf1438d207034403c0a763078&version=stable&mode=debug&edition=2015 чот хреново у меня с примерами, лучш задавай направляющие вопросы
Вот кусок кода: fn process_array(array: &Value, value_name: Option<&String>) -> Result<Vec<MetadataObject>, Box<Error>> { if !array.is_array() { return Err(From::from("Array expected")); } let mut metadata: Vec<MetadataObject> = Vec::new(); for value in array.as_array().unwrap() { } Ok(metadata) } Вопрос вместо unwrap не могу поставить, т.к. тип другой
kitsu
https://play.rust-lang.org/?gist=e4c9b48bf1438d207034403c0a763078&version=stable&mode=debug&edition=2015 чот хреново у меня с примерами, лучш задавай направляющие вопросы
https://play.rust-lang.org/?gist=31c67ec90aefc5a5c017a34a3ef2b1ea&version=stable&mode=debug&edition=2015 вот так чутка нагляднее
Vladislav
serde_json
Vladislav
сча попробую накидать синтетический пример
Vladimir
Просто у серде поидее нету From<SerdeError> for Box<StdError>
Vladimir
Посмотри в какие типы ошибок серде ошибки умеют конвертится и юзай
Vladimir
Ну либо действительно вручную можешь написать as_array().map_err(method_forconvertingerrors)
Alex
Я правильно понимаю, что для того, чтобы работал оператор "?", то везде должне быть одинаковый тип Error?
можно заюзать в некоторых случаях crate failure который уменьшает количество головной боли
Vladislav
https://play.rust-lang.org/?gist=bbe7fabf178a4de037b73c9c658bab35&version=stable&mode=debug&edition=2015
Vladislav
вот такая у меня проблема. или я неверно формулирую свои грабли?
Berkus
всё ясно короче)
ну тебе наверное ясно, наслаждайся
Alexander
А где можно почитать какие fromiterator для collect() бывают? Ну чтоб разнообразить его использование. А то только в вектор и result умею.
Alexander
вы документации
Ну в самом описании коллектив не много.
Alexander
string
Ну да, это видел. Я что-то с парами ещё видел, но не найду.
Vladimir
вот такая у меня проблема. или я неверно формулирую свои грабли?
ну смотри, еще раз. алгоритм таков: 1) открываешь https://docs.serde.rs/serde_json/struct.Error.html смотришь для каких типов реализован Into видишь что нету. План А отменяется, переходишь к плану Б 2) Нужно привести два типа ошибок к одному (твой и этот) для этого либо сам реализуешь для своего типа From<serde_json::Error> либо приводишь оба типа к общему - как удобнее. 3) Промежуточно смотришь как реализовать преобразование, обычно это либо через Error: ToString, либо через реализацию типажа Std::Error.
Alexander
если коротко: в хэшмапы, в хэшсеты, бтримапы, етц
Во, вроде оно как раз из пар, вот только найти бы описание где в одном месте, хз что оно ещё умеет.
Vladislav
а не подойдет ли тут например крейт failure
Ага, советовали уже, спасибо. Покурю на досуге.
123
Кто-нибудь работал с actix_web`ом? Есть отдельный хандлер который вынимает первое вхождение из БД и возвращает его. хандлер возвращает мне теперь ошибку, а не вхождение, хотя до того как я изменил структуру приложения, все работало. В чем может быть ошибка, если тут есть знающие, навкидку можете ответить?
Berkus
навскидку: после твоих изменений в хендлере теперь происходит ошибка
Leonid 🦇
а почему занятый в if let матче реф всё еще занят в else?
պլհկ
N L L
123
@berkus все изменения что я сделал - это расфасовал код по отдельным модулям, сам код я никак не менял
պլհկ
я что-то поменял и у меня ошибка. В чем может быть ошибка, если тут есть знающие, навкидку можете ответить?
Денис
*шутка про либастрал.со*
123
ну то вы так сразу, уважаемые, как может смена директорий и увеличение кол-ва файлов повилять на работоспособность? все импорты имен необходимых были приведены в соотвествии с структурой новой и все компилится, но вот ошибка! и ладно бы БД, но с БД все ок
Денис
хз, где угодно мог накосячить
Денис
напиши тесты на исходную версию
Денис
или хотя бы делай изменения маленькими порциями и проверяй каждый раз, что всё работает
kitsu
https://github.com/l4l/cloud-stash Я как-то уже вбрасывал свою идею сюда, но чот не было времени пилить. В общем облачное хранилище (e.g dropbox), которое в идеале криптует хранимое и регает новые аккичи, когда место заканчивается. За пару деньков запилил хранение локальной мета-инфы в sqlite и upload/download файлов по чанкам
kitsu
Кодес в принципе там весьма печален, хотелось бы по нему послушать советов/комментариев пока он относительно мал (ну разве что кроме обилия unwrap-ов). В частности код с sqlite получился вообще каким-то говном, мб есть вариант как-то это улучшить? https://github.com/l4l/cloud-stash/blob/master/src/local/sqlite.rs#L31-L62
Victor
> регает новые аккичи, когда место заканчивается. а в чём смысл? ограничивать доступное место на аккаунт и тут же делать возможность автоматического добавления новых аккаунтов при исчерпании места %) Чёт не понял.
Victor
хм... или это не сервер хостинга, а типа агрегатор?
Vladimir
не надо платить 250 рублей с завтраков