Ричи качи първо решение на 05.11.2019 14:30 (преди почти 6 години)
Разумно решение, вероятно можеше да се посъкрати малко.
Compiling solution v0.1.0 (/tmp/d20200111-2173579-kns9mg/solution) Finished test [unoptimized + debuginfo] target(s) in 4.13s 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 ... ok 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 ... ok test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Doc-tests solution running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Разумно решение, вероятно можеше да се посъкрати малко.
Подозирам, че тук можеше да минеш без
String
, а функцията ти да приема&str
. Рекурсивното извикване би билоhex_helper(&new[..])
или директноhex_helper(&new)
. Би ти спестило едно извикване на.to_string()
в дългите верижки method call-ове по-долу.Всеки път като имаш
unwrap()
тук, можеше да го заместиш с една match клауза и да върнешNone
ако не получиш очаквания резултат. И щеше да премахнеш напълно нуждата отvalidate
. Нещо повече, тъй катоOption
работи с?
, вероятно можеше да замениш този код съсSome(hex_helper(val.to_string()).chars().next()?.to_digit(radix)?)
.