0
にforループ内に割り当てられません:I出力verse(1)
として文字列の戻り値は、このコード・スニペットを考えると錆
pub fn verse(start_bottles: i32) -> String {
let mut song_template: String = "%1 of beer on the wall, %2 of beer.\n%3, %4 of beer on the wall.\n".to_string();
match start_bottles {
0 => lyrics_no_bottles(&mut song_template),
1 => lyrics_one_bottle(&mut song_template),
2 => lyrics_two_bottles(&mut song_template),
_ => lyrics_more_bottles(&mut song_template, start_bottles)
}
song_template
}
pub fn sing(first: i32, last: i32) -> String {
let mut song: String = "".to_string();
for num in (8..6).rev() {
song = verse(1);
}
song
}
それが正常に動作 - テストした文字列が表示され、完了です。しかし、verse(1)
の結果をString
バインディングsong
に割り当てると、song
は空に見えますか?私はこの行動を理解していません。
右辺が既に文字列であるときに、それらの明示的な 'String'型の注釈を削除することができます(' to_string() 'を使用している場合)。 )。 –
私は可読性のために保管しています...すべてのケースで多くの推論が好きではありません...常にタイプを見たいと思っています – xetra11
私はそれを完全に理解することができますが、コミュニティ内のコーディングスタイルたとえそれが新しい言語の人にとって間違っているとしても、誰もがほかの人のコードをすばやく読むことができます。しかし、これはSOのコメントのセクションで解決するものではありません:) –