我似乎无法完成这项工作。我一直收到一个错误,说'len'在类型'& [str]'上不存在。
fn testLength(arr: &[str]) {
if arr.len >= 10 {
// Do stuff
}
}
我还是Rust的新手,我知道这是一个指向原始字符串的指针。为什么我不能在运行时获取底层字符串的长度?谷歌搜索“生锈中的弦长”和“生锈中的阵列长度”这些东西让我绝对没有。
答案 0 :(得分:29)
当然,你可以这样做 - 它只是len
不是一个字段,它是一种方法:
fn test_length(arr: &[String]){
if arr.len() >= 10 {
// Do stuff
}
}
如果你刚开始学习Rust,你应该通读official book - 你也会发现为什么&[str]
没有意义(简而言之,str
是未确定类型的,而你不能创建它的数组;而{(1}}应该用于借用的字符串,而&str
用于拥有的字符串;很可能你在某个地方有一个String
,你很容易得到Vec<String>
1}}出来的。)
我还要补充一点,目前尚不清楚是否要将字符串或字符串数组传递给函数。如果是字符串,那么你应该写
&[String]
但是,字符串上的 fn test_length(arr: &str) {
if arr.len() >= 10 {
// Do stuff
}
}
会返回以字节为单位的长度,这可能不是您需要的长度(长度以字节为单位!=“字符”中的长度,一般来说,您使用的“字符”的定义,因为Rust的字符串是UTF-8,UTF-8是可变宽度编码。
请注意,我还将len()
更改为testLength
,因为snake_case是Rust程序的公认约定。