13-在函数中使用字符串
7.2.4 在函数中使用字符串
将字符串切片传递给函数是惯用且高效的做法。以下是一个例子:
// string_slices_func.rs
fn say_hello(to_whom: &str) {
println!("Hey {}!", to_whom)
}
fn main() {
let string_slice: &'static str = "you";
let string: String = string_slice.into();
say_hello(string_slice);
say_hello(&string);
}
细心的读者应该会发现,say_hello方法也适用于&String类型。在内部,&String会自动被强制转换为&str,因为String为str类型实现了类型强制性特征Deref,该特征确保了&String到&str的转换。
在这里你会发现为何在前面强调这一点。字符串切片是一个用途广泛的输入型参数,不仅适用于实际的字符串切片引用,还适用于String引用。所以再强调一遍:如果你需要将一个字符串传递给你的函数,那么请使用字符串切片&str。