在做Rust By Practice的练习
// 使用至少两种方法来修复错误
fn main() {
let s: Box<str> = "hello, world".into();
greetings(s)
}
fn greetings(s: &str) {
println!("{}",s)
}
解答给出了两个
fn main() {
let s: Box<str> = "hello, world".into();
greetings(&s)
}
fn greetings(s: &str) {
println!("{}",s)
}
这个我知道 另一个
fn main() {
let s: Box<&str> = "hello, world".into();
greetings(*s)
}
fn greetings(s: &str) {
println!("{}", s);
}
我有点迷糊,into()方法为啥得到结果类型还可以不一样了? Box<&str>是不是类似C里面的 **x 指针类型?
1
共 2 条评论, 1 页
评论区
写评论其实是调用了不同的into方法。
看into要看对应的from
第一个是https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#impl-From%3C%26str%3E-for-Box%3Cstr%3E
第二个是https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#impl-From%3CT%3E-for-Box%3CT%3E
第一个通过&str创建了个堆上的新Owned str
第二个是将&str这个指针复制到堆上