Емилиан качи първо решение на 04.12.2017 23:29 (преди почти 8 години)
Виж какво Andrew написа във форума...
Към профила на Емилиан Станков
Compiling solution v0.1.0 (file:///tmp/d20171210-6053-nm0x1x/solution)
Finished dev [unoptimized + debuginfo] target(s) in 5.73 secs
Running target/debug/deps/solution-3f98bfa5c86a5dd9
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running target/debug/deps/solution_test-3d9e4ea2eafbbc82
running 15 tests
test solution_test::test_command_parsing_cyrillic ... FAILED
test solution_test::test_command_parsing_extra_stuff ... ok
test solution_test::test_command_parsing_full_words ... ok
test solution_test::test_command_parsing_partial_words ... ok
test solution_test::test_command_parsing_spacing ... ok
test solution_test::test_command_parsing_special ... FAILED
test solution_test::test_game_basic ... ok
test solution_test::test_game_cyrillic ... ok
test solution_test::test_game_display ... ok
test solution_test::test_game_error ... ok
test solution_test::test_game_guess_basic ... ok
test solution_test::test_game_guess_state_lose ... ok
test solution_test::test_game_guess_state_won ... ok
test solution_test::test_game_guess_word ... ok
test solution_test::test_game_over_guesses ... ok
failures:
---- solution_test::test_command_parsing_cyrillic stdout ----
thread 'solution_test::test_command_parsing_cyrillic' panicked at 'Expected Ok(Command::TryLetter('\u{44f}')) to match Err(ParseError("try letter я"))', tests/solution_test.rs:235:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
---- solution_test::test_command_parsing_special stdout ----
thread 'solution_test::test_command_parsing_special' panicked at 'Expected Ok(Command::TryLetter('\u{44f}')) to match Err(ParseError("try letter я"))', tests/solution_test.rs:194:4
failures:
solution_test::test_command_parsing_cyrillic
solution_test::test_command_parsing_special
test result: FAILED. 13 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out
error: test failed, to rerun pass '--test solution_test'
Виж какво Andrew написа във форума...
Ех, колко много амперсанди :). Не ти трябва
&self-- спокойно можеш да match-неш наself, и да превърнеш&&в&.Знаех си, че има нещо гнило, но компилатора настояваше :D
Метода
lenброи байтове, не char-ове: https://doc.rust-lang.org/std/primitive.str.html#method.lenТова ти е едната грешка. Дори да беше тествал с кирилица обаче, и да го беше хванал, пак щеше да имаш 14 точки, понеже не проверяваш за празен низ. Тоест, какво става, ако няма
command[0]? Паника.По принцип в Rust е за предпочитане да използваш методи като
get, които вземат елемент на индекс или връщатNone. В случая, спокйно можеше да вземешlet first_char = command.get(0).and_then(|word| word.chars().get(0)), примерно. Ако ти е трудно да изпарсиш този ред, пробвай да потърсиш из документацията за непознатите методи. Може да погледнеш и моето решение като вдъхновение (аз съм го направил подобно на теб): https://fmi.rust-lang.bg/tasks/4/solutions/43Благодаря за коментарите,
getнаистина изглежда по-подходящ за такива операции :)