Решение на Дигитален корен от Людмил Данаилов
Обратно към всички решения
Към профила на Людмил Данаилов
Резултати
- 13 точки от тестове
- 0 бонус точки
- 13 точки общо
- 4 успешни тест(а)
- 2 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (/tmp/d20200111-2173579-nlpwki/solution)
Finished test [unoptimized + debuginfo] target(s) in 4.36s
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 6 tests
test solution_test::test_binary ... ok
test solution_test::test_decimal_basic ... FAILED
test solution_test::test_hex_basic ... ok
test solution_test::test_invalid ... ok
test solution_test::test_octal_basic ... ok
test solution_test::test_zeroes ... FAILED
failures:
---- solution_test::test_decimal_basic stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `None`,
right: `Some(0)`', tests/solution_test.rs:11:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
---- solution_test::test_zeroes stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `None`,
right: `Some(0)`', tests/solution_test.rs:54:5
failures:
solution_test::test_decimal_basic
solution_test::test_zeroes
test result: FAILED. 4 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out
error: test failed, to rerun pass '--test solution_test'
История (1 версия и 4 коментара)
Людмил качи първо решение на 05.11.2019 12:09 (преди почти 6 години)
Няма причина да конструираш грешка, която съдържа произволна стойност, и после да ѝ викнеш
.ok()
за да я конвертираш. Този ред е напълно еквивалентен просто наreturn None
. Дадохме hint-а за метода.ok()
в случай, че извикате функция от стандартната библиотека, която ви връща грешка и искате лесен начин да върнетеNone
.Иначе, този код има бъга, че използваш
>
вместо>=
и<
вместо<=
. Така цифрите 0 и 9 стават невалидни.Вместо тук да викаш
unwrap()
, можеше да провериш далиto_digit
ти връща някаква стойност, илиNone
. Във втория случай, можеше директно да върнешNone
от функцията. Ако беше избрал да си конструираш така кода, горната валидация става ненужна. To be fair, повечето от вас са разделили валидацията и processing-а :).