Решение на Hangman от Димитър Узунов
Резултати
- 14 точки от тестове
- 0 бонус точки
- 14 точки общо
- 14 успешни тест(а)
- 1 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (file:///tmp/d20171210-6053-1m006qh/solution) Finished dev [unoptimized + debuginfo] target(s) in 5.68 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 ... ok 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 ... ok 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 ... FAILED 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_game_error stdout ---- thread 'solution_test::test_game_error' panicked at 'Expected Some(GameError::InvalidSolution(_)) to match None', tests/solution_test.rs:38:4 note: Run with `RUST_BACKTRACE=1` for a backtrace. failures: solution_test::test_game_error test result: FAILED. 14 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out error: test failed, to rerun pass '--test solution_test'
История (2 версии и 3 коментара)
Димитър качи решение на 08.12.2017 13:56 (преди почти 8 години)
Готин начин за организация на кода, харесва ми :). Нещо малко, което можеш да направиш, за да съкратиш return типа, е да направиш type alias:
type CommandResult = Result<Command, <Command as FromStr>::Err>;
Това трябва да стане извън impl
блока, иначе компилатора се оплаква за асоциирани типове. Слага малко индирекция, но може да опрости нещата. Ако командите бяха в свой модул, можеше директно да си дефинираш тип Result
, както се прави в io
модула.
Грешен метод -- трябва да върнеш грешка ако !solution.chars().all(&char::is_alphabetic)
. Амперсанда пред char::is_alphabetic
също не ти трябва -- по този начин вземаш reference към глобално достъпния pointer към функция. Самото char::is_alphabetic
би трябвало да има размер всичко на всичко 1 pointer, така че не печелиш нищо.
Стабилно решение. Другия път, още малко тестване, за да хванеш бъгове като този с any
/all
:).
Готин начин за организация на кода, харесва ми :). Нещо малко, което можеш да направиш, за да съкратиш return типа, е да направиш type alias:
Това трябва да стане извън
impl
блока, иначе компилатора се оплаква за асоциирани типове. Слага малко индирекция, но може да опрости нещата. Ако командите бяха в свой модул, можеше директно да си дефинираш типResult
, както се прави вio
модула.Грешен метод -- трябва да върнеш грешка ако
!solution.chars().all(&char::is_alphabetic)
. Амперсанда предchar::is_alphabetic
също не ти трябва -- по този начин вземаш reference към глобално достъпния pointer към функция. Самотоchar::is_alphabetic
би трябвало да има размер всичко на всичко 1 pointer, така че не печелиш нищо.