Решение на Text Info от Стефан Георгиев
Към профила на Стефан Георгиев
Резултати
- 15 точки от тестове
- 0 бонус точки
- 15 точки общо
- 15 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (file:///tmp/d20171026-5817-1j2bpdv/solution) invalid expression !1251 = !DIExpression(6, 34, 0, 6) invalid expression !1254 = !DIExpression(6, 34, 8, 6) invalid expression !1210 = !DIExpression(6, 34, 0, 6) invalid expression !1213 = !DIExpression(6, 34, 8, 6) Finished dev [unoptimized + debuginfo] target(s) in 3.26 secs Running target/debug/deps/solution-f5dd4e94aa395cae running 1 test test tests::it_works ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Running target/debug/deps/solution_test-c3b431457e2a7a27 running 15 tests test solution_test::test_alpha_count ... ok test solution_test::test_alpha_count_2 ... ok test solution_test::test_char_count ... ok test solution_test::test_cyrillic_letter_count ... ok test solution_test::test_emotions ... ok test solution_test::test_emotions_repeated_punctuation ... ok test solution_test::test_empty_string ... ok test solution_test::test_latin_letter_count ... ok test solution_test::test_sentence_count ... ok test solution_test::test_sentence_count_2 ... ok test solution_test::test_triple_dots_count ... ok test solution_test::test_unicode_char_count ... ok test solution_test::test_word_count ... ok test solution_test::test_word_count_2 ... ok test solution_test::test_word_count_3 ... ok test result: ok. 15 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
История (6 версии и 1 коментар)
Стефан качи решение на 25.10.2017 14:40 (преди почти 8 години)
Стефан качи решение на 25.10.2017 15:18 (преди почти 8 години)
Стефан качи решение на 25.10.2017 15:49 (преди почти 8 години)
Стефан качи решение на 25.10.2017 15:52 (преди почти 8 години)
Стефан качи решение на 25.10.2017 15:58 (преди почти 8 години)
Изключително мега важно е да знаеш това (трябваше да пиша по-рано): Този код не трябваше да мине. Забравих да пиша тест, който да го счупи, но дори нямаше да се компилира, ако бях.
Подозирам, че проблема идва от неразбиране (което се надявам да поправим скоро на лекции). Този 'static
означава нещо доста особено. Значи, че този конкретен тип е само и единствено статични низове, набити в кода. Ако бяхме извикали кода по този начин, щеше да има компилационна грешка:
s = String::new("something");
t = TextInfo::new(&s[..]);
Този String::new
взема статичния низ, който сме подали, "something" (който наистина е &'static str
, и го копира в heap-а, и когато го референцираме с &s[..]
, получаваме &str
.
Типа, който ти указахме и в условието, е &str
, а не &'static str
. Ако подадеш динамично-алокиран &str
на функция, която очаква &'static str
, това ще ти гръмне с компилационна грешка.
Ако не си разбрал обяснението, питай на лекции, ще ги го обясня по различен начин. В следващи домашни, ще внимавам да не минават такива неща, но ще гледам чак такива gotchas да ги вкарам още в базовия тест.
Изключително мега важно е да знаеш това (трябваше да пиша по-рано): Този код не трябваше да мине. Забравих да пиша тест, който да го счупи, но дори нямаше да се компилира, ако бях.
Подозирам, че проблема идва от неразбиране (което се надявам да поправим скоро на лекции). Този
'static
означава нещо доста особено. Значи, че този конкретен тип е само и единствено статични низове, набити в кода. Ако бяхме извикали кода по този начин, щеше да има компилационна грешка:Този
String::new
взема статичния низ, който сме подали, "something" (който наистина е&'static str
, и го копира в heap-а, и когато го референцираме с&s[..]
, получаваме&str
.Типа, който ти указахме и в условието, е
&str
, а не&'static str
. Ако подадеш динамично-алокиран&str
на функция, която очаква&'static str
, това ще ти гръмне с компилационна грешка.Ако не си разбрал обяснението, питай на лекции, ще ги го обясня по различен начин. В следващи домашни, ще внимавам да не минават такива неща, но ще гледам чак такива gotchas да ги вкарам още в базовия тест.