Решение на Дигитален корен от Людмил Данаилов
Обратно към всички решения
Към профила на Людмил Данаилов
Резултати
- 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-а :).