Ричи качи първо решение на 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)?).