Димитър качи първо решение на 29.11.2019 01:58 (преди почти 6 години)
Кода не е лош, но трябваше след първата версия да се върнеш и да го дебъгнеш и довършиш :). Е, 9 точки не са малко.
Към профила на Димитър Иринков
Compiling solution v0.1.0 (/tmp/d20200111-2173579-1f4hklv/solution) warning: unused variable: `left_over` --> src/lib.rs:117:22 | 117 | let (packet, left_over) = Packet::deserialize(packet_data)?; | ^^^^^^^^^ help: consider prefixing with an underscore: `_left_over` | = note: `#[warn(unused_variables)]` on by default warning: unused variable: `left_over` --> src/lib.rs:117:22 | 117 | let (packet, left_over) = Packet::deserialize(packet_data)?; | ^^^^^^^^^ help: consider prefixing with an underscore: `_left_over` | = note: `#[warn(unused_variables)]` on by default Finished test [unoptimized + debuginfo] target(s) in 3.69s Running target/debug/deps/solution-a73e64ec87929bd0 running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Running target/debug/deps/solution_test-38971695424b36d5 running 15 tests test solution_test::test_construct_packet_from_unicode ... ok test solution_test::test_construct_packet_no_remainder ... ok test solution_test::test_construct_packet_with_remainder ... ok test solution_test::test_construct_packet_with_remainder_cyrillic ... ok test solution_test::test_consuming_packets ... FAILED test solution_test::test_deserialize_invalid_packet ... FAILED test solution_test::test_deserialize_packet ... ok test solution_test::test_deserialize_unicode_packet ... ok test solution_test::test_full_roundtrip ... FAILED test solution_test::test_full_roundtrip_for_zero_size_string ... thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: InvalidPacket', src/libcore/result.rs:1165:5 FAILED test solution_test::test_invalid_packet_combination ... FAILED test solution_test::test_iterating_packets ... FAILED test solution_test::test_iterating_packets_for_zero_size_string ... ok test solution_test::test_serialize_packet ... ok test solution_test::test_zero_size ... ok failures: ---- solution_test::test_consuming_packets stdout ---- thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Timeout', src/libcore/result.rs:1165:5 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace. ---- solution_test::test_deserialize_invalid_packet stdout ---- thread 'main' panicked at 'Expression Ok((Packet { protocol: 2, payload: [120, 121, 122], checksum: 363 }, [])) does not match the pattern "Err(PacketError::UnknownProtocolVersion)"', tests/solution_test.rs:147:5 ---- solution_test::test_full_roundtrip stdout ---- thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Timeout', src/libcore/result.rs:1165:5 ---- solution_test::test_full_roundtrip_for_zero_size_string stdout ---- thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: InvalidPacket', tests/solution_test.rs:221:5 ---- solution_test::test_invalid_packet_combination stdout ---- thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Timeout', src/libcore/result.rs:1165:5 ---- solution_test::test_iterating_packets stdout ---- thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Timeout', src/libcore/result.rs:1165:5 failures: solution_test::test_consuming_packets solution_test::test_deserialize_invalid_packet solution_test::test_full_roundtrip solution_test::test_full_roundtrip_for_zero_size_string solution_test::test_invalid_packet_combination solution_test::test_iterating_packets test result: FAILED. 9 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out error: test failed, to rerun pass '--test solution_test'
Кода не е лош, но трябваше след първата версия да се върнеш и да го дебъгнеш и довършиш :). Е, 9 точки не са малко.
Добра употреба на
split_first
иsplit_at
, и също на.ok_or
, добре намерени в документацията. That said, тук ти липсва проверка за валидна версия :).Тук е ключовия бъг, който ти превръща кода в infinite loop :). Трябваше да е
bytes
, което се ъпдейтва, а неself.as_bytes()
, което винаги е целия низ.Добро начало, още малко ти оставаше да го превърнеш в цикъл и да продължиш итерацията върху
left_over
. Бих предположил, че ти е свършило времето, но всъщност си го писал доста рано, така че изглежда просто не си се върнал да го оправиш. Жалко.