Loyd
Ааа, у тебя разделителя нет
Tuntz
ага
Tuntz
packet_parse_result: alt!(
tag!("getchallenge") => { |b| Ok((b, Packet::ChallengeRequest)) } |
tag!("connectResponse") => { |b| Ok((b, Packet::ConnectResponse)) } |
tag!("challengeResponse") => { parse_challenge_response }
) >>
(packet_parse_result.map(|(_b, data)| data)?)
Loyd
Так не получится же
Loyd
https://docs.rs/nom/4.0.0-alpha2/src/nom/branch.rs.html#220
Loyd
После => ожидается функция, которая принимает только o. То есть i оттуда не получить
Tuntz
оно собирается, но не знаю будет ли работать - будут приколы с передвижением указателя по массиву данных
Tuntz
короче, проще сделать прокладку в виде PacketType и доп. свича и не париться
Loyd
Формат твой?
Tuntz
протокол т.е.?
Loyd
yep
Tuntz
упаси боже байтоёбство городить - я пишу парсер сетевого протокола Quake III Arena и производных
Loyd
Хм. https://github.com/Geal/nom/issues/627
Loyd
То есть возможность брать самый длинный у них есть. Это бы решило довольно сильно проблему для кейса alt с кучей do_parse
Loyd
Я, правда, не вижу ниже такого в switch (
Loyd
@vorot93 return_error есть
Loyd
Это аля cut-а прологовского
Loyd
В целом, если ставить после tag! в конструкции с do_parse внутри alt, то проблему с ошибками решает
Anton
ребят
Anton
короче вариант с дефолтными значениями для serde не проканал
Anton
нашел проблему довольно большую
Anton
значения нужно подставлять по мере их добавления, тоесть если значения нет, его не нужно добавлять вообще
Anton
ибо в опциях стандартных флексов нет возмодности поставить во многих "значение по умолчанию" в итоге лайаут крашится
Anton
сначала подумал сделать чтото типо Option чтобы потом несуществующие поля можно было чекать, и потом в методе получения готового значения сделать сверку и мол если есть добавить
Anton
в итоге я на распутье что вообще делать
Anton
возвращатся обратно к Value чтоле
Anton
и если так - то проблема стоит в тмо что как тогда при итерации Value кастовать типы к тому что есть
Anton
тоесть есть у меня положим там enum,как его скастоватоь и проверить
Anton
крч жопа
Anton
Итак вопрос, можно ли использовать Option в serde как untaged, чтобы маркировать что мол если значения нет то None если есть то вернуть Some проставленного типа, с проверкой
Anton
и второй вопрос - если нет ответа на первый, как кастовать и проверять соответствие типу с Serealize относительно голого Value
պլհկ
https://docs.rs/serde_json/1.0.17/serde_json/fn.from_value.html
Anton
Anton
պլհկ
Че за чистый
Anton
Тоесть нельзя чтобы он несуществующее значение как None обрабатывал, а провалидированное как Some(T)
Anton
тобишь структура типо
#[derive(Deserialize)]
struct A{ field: Option<MyType> }
պլհկ
Дефолт=ноне пишешь над полем
Anton
А
Anton
тоесть работает норм так
Anton
окей спасибо
Tuntz
@ployd пока тупо сделал с PacketType:
https://github.com/rust-game-parsers/q3a/blob/master/src/lib.rs
Loyd
Loyd
Дублирование не радует, конечно
Loyd
В сторону return_error посмотрел?
Tuntz
не
Tuntz
потом посмотрю когда напишу тесты
Anton
Ееее
Anton
Байтики
Tuntz
ага
Tuntz
времена когда не было ни json, ни протобафа
Anonymous
В геймдеве и сейчас в неткоде не используется ни json, ни протобаф
Semyon
Golodnyi
https://www.ozon.ru/context/detail/id/144056219/
кто нить читал?
Cat
да, говорят перевод не очень
Cat
t.me/rustlang_ru/123884
Golodnyi
ну вроде не художественная литература, перевод не так критичен
Маjко
Еще критичнее
Маjко
Так то
Маjко
Терминология, итд
Golodnyi
там терминологию перевели?)
Golodnyi
ну тогда кроме знаний, еще и ложка юмора будет
Маjко
Вангую, что да.
Посмотри на перевод первой книги от rustycrate
Маjко
Там переведены термины
Маjко
Выглядит так себе
Loo
то есть типаж вместо трэйта - так себе?
Маjко
Зачем тебе перевод, читай в оригинале вторую книгу
Это не художественная литература, как ты сам сказал)
Маjко
Cat
O'Reilly тоже есть дамнутый на английском (если уж очень хочется)
Golodnyi
май инглиш из вери бед
Golodnyi
я в принципе техническую литературу по пол года читаю, на инглише буду полтора года читать
vladislav
там же всё понятно
vladislav
rust book очень простым английским написана
vladislav
Техническая литература в принципе не очень сложная, главное с терминологией разобраться
Golodnyi
ну я рад за ваш английский)
Golodnyi
в мое время в школах учили плохо, а самоорганизации в сторону иностранных языков я так и не нашел, читать могу, но это сильноо менее приятно, чем на родном
Golodnyi
языки неплохо учатся и просто по примерам кода, если на то пошло