为什么这段代码有效?匹配语句中的逗号只是一个约定吗?
for (index, character) in argv[1].chars().enumerate() {
match character {
'a' | 'A' => {println!("{}: 'A'", index)}
'e' | 'E' => {println!("{}: 'E'", index)}
'i' | 'I' => {println!("{}: 'I'", index)}
'o' | 'O' => {println!("{}: 'O'", index)}
'u' | 'U' => {println!("{}: 'U'", index)}
_ => {
let consonant: Vec<_> = character.to_uppercase().collect();
println!("{}: {:?} is not a vowel", index, consonant[0])
}
}
Run Code Online (Sandbox Code Playgroud) 的文档std::mem::size_of没有提供&str或String正在使用的示例,但都使用以下代码返回大小:
println!("The size of a string slice (&str): {}", mem::size_of::<&str>());
// OUTPUT: The size of a string slice (&str): 16
println!("The size of a growable string (String): {}", mem::size_of::<String>());
// OUTPUT: The size of a growable string (String): 24
Run Code Online (Sandbox Code Playgroud)
根据我的理解,&str类型只是对“编码为 UTF-8 字节流的 Unicode 标量值序列”开头的引用。是&str指两个指针的大小吗?我知道一个指针在 64 位系统上有 8 个字节长。
mem::size_of::<str>()确实返回错误,就像我所期望的那样。然而,无论是String和&String收益的大小。