Димитър качи първо решение на 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. Бих предположил, че ти е свършило времето, но всъщност си го писал доста рано, така че изглежда просто не си се върнал да го оправиш. Жалко.