获取作为参数传入的数组的大小

Getting size of an array passed in as an argument

我似乎无法完成这项工作。我不断收到一条错误消息,提示 'len' 在类型“&[String]”上不存在。

fn testLength(arr: &[String]) {
    if arr.len >= 10 {
        // Do stuff
    }
}

我对 Rust 还是很陌生,我知道这是指向某处原始字符串的指针。为什么我不能在运行时获取底层字符串的长度?谷歌搜索 "length of string in rust" 和 "length of array in rust" 之类的东西让我完全无所适从。

当然可以,只是len不是字段,是方法:

fn test_length(arr: &[String]){
    if arr.len() >= 10 {
        // Do stuff
    }
}

如果你刚开始学习 Rust,你应该通读 official book - 你也会发现为什么 &[str] 没有意义(简而言之,str 是未确定大小的类型,而且你不能制作它的数组;相反,&str 应该用于借用的字符串,String 用于拥有的字符串;很可能你在某个地方有一个 Vec<String>,你可以很容易地得到&[String]出来了)。

我还要补充一点,如果您想将字符串或字符串数​​组传递给函数,则不清楚。如果它是一个字符串,那么你应该写

fn test_length(arr: &str) {
    if arr.len() >= 10 {
        // Do stuff
    }
}

len() 在字符串上,但是,returns 可能不是您需要的字节长度(以字节为单位的长度!= 通常 "characters" 中的长度,无论定义如何你使用的"character",因为字符串在 Rust 中是 UTF-8,而 UTF-8 是一种可变宽度编码)。

请注意,我还将 testLength 更改为 test_length,因为 snake_case 是 Rust 程序公认的约定。