Кирил качи първо решение на 24.10.2018 17:54 (преди почти 7 години)
Използвах на плайграунда rustfmt и нещо се е оплескал форматинга на едно място. Ако искате ще го реъплоудна като го фиксна на ръка.
Compiling solution v0.1.0 (/tmp/d20190123-22631-yu47ww/solution) Finished dev [unoptimized + debuginfo] target(s) in 4.51s Running target/debug/deps/solution-2e785d603b538f71 running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Running target/debug/deps/solution_test-29808948fb50ed3a running 15 tests test solution_test::test_both_static_and_dynamic_strings ... ok test solution_test::test_camelcase_basic ... ok test solution_test::test_cyrillic1 ... ok test solution_test::test_digits1 ... ok test solution_test::test_digits2 ... ok test solution_test::test_digits3 ... ok test solution_test::test_kebabcase_basic ... ok test solution_test::test_multibyte_uppercase ... FAILED test solution_test::test_normalize_case1 ... ok test solution_test::test_normalize_case2 ... ok test solution_test::test_screaming_snakecase_basic ... ok test solution_test::test_titlecase_basic ... ok test solution_test::test_underscore_basic ... ok test solution_test::test_validity ... ok test solution_test::test_whitespace ... ok failures: ---- solution_test::test_multibyte_uppercase stdout ---- thread 'solution_test::test_multibyte_uppercase' panicked at 'assertion failed: `(left == right)` left: `"someSpecialCase"`, right: `"someSSpecialCase"`', tests/solution_test.rs:104:5 note: Run with `RUST_BACKTRACE=1` for a backtrace. failures: solution_test::test_multibyte_uppercase test result: FAILED. 14 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out error: test failed, to rerun pass '--test solution_test'
Използвах на плайграунда rustfmt и нещо се е оплескал форматинга на едно място. Ако искате ще го реъплоудна като го фиксна на ръка.
Разумна имплементация на чистенето на whitespace... mostly. Ето този код ще ти гръмне:
Този unicode е специален интервал, който отнема повече от един байт. Ти броиш char-ове, но след това индексираш низа по байтове. Това ще работи за стандартните интервал, табулация, нов ред, но няма да работи за unicode whitespace (https://en.wikipedia.org/wiki/Whitespace_character#Unicode).
Това минава нашите тестове, така че fair enough. Но можеше да се справиш най-лесно просто с вградената функция
trim
:"foo".trim()
.Не се бях замислял за unicode whitespace. Мерси!
.chars().next().unwrap()
ще гръмне за празен низ :). За опростяване, не сме изисквали специален handling за празни низове, но runtime panic не е добро решение при всички положения. Мисли в бъдеще за такива cases.