これはうまくいかないようです。タイプ「&[String]」に「len」が存在しないというエラーが発生し続けます。
fn testLength(arr: &[String]) {
if arr.len >= 10 {
// Do stuff
}
}
私はまだRustの新人ですが、これはどこかで生の文字列へのポインタであることを理解しています。実行時に基になる文字列の長さを取得できないのはなぜですか? 「Rustでの文字列の長さ」や「Rustでの配列の長さ」などのグーグル処理を行うと、どこにも絶対につながりません。
もちろん、それは可能です-len
はフィールドではなく、メソッドです。
_fn test_length(arr: &[String]){
if arr.len() >= 10 {
// Do stuff
}
}
_
Rustの学習を始めただけの場合は、 公式ブック を一読する必要があります。_&[str]
_が意味をなさない理由もわかります(つまり、str
はサイズなしの型であり、配列を作成することはできません。代わりに、借用した文字列には_&str
_を、所有する文字列にはString
を使用する必要があります。どこかに_Vec<String>
_があり、簡単にできます_&[String]
_を取得します)。
関数に文字列または文字列の配列を渡すかどうかは明確ではないことも付け加えておきます。文字列の場合は、次のように記述します
_fn test_length(arr: &str) {
if arr.len() >= 10 {
// Do stuff
}
}
_
ただし、文字列に対してlen()
を使用すると、必要な長さではないバイト長が返されます(バイト長!=一般に「文字」の長さ、使用する「文字」の定義に関係なく)。 RustではUTF-8であり、UTF-8は可変幅エンコーディングです)。
また、testLength
を_test_length
_に変更したことに注意してください。これは、snake_caseがRustプログラムの規約として受け入れられているためです。