gpt4 book ai didi

rust - 为什么 Into 可以接受 String 类型?

转载 作者:行者123 更新时间:2023-12-05 02:00:23 25 4
gpt4 key购买 nike

struct Person {
name: String,
}

impl Person {
fn new<S: Into<String>>(name: S) -> Person {
Person { name: name.into() }
}
}

fn main() {
let person = Person::new("test");
let person = Person::new("test".to_string());
}

&strInto<String>特质,所以我知道我可以调用Person::new("test")适本地。

但是,我认为Person::new("test".to_string())失败,因为 String没有 From<String> for String , 所以 Into<String>不是自动派生的。
为什么我可以调用Person::new("test".to_string())

另外,我也可以调用下面的代码。

let test: String = String::from("test".to_string());

在上述情况下,我无法理解我可以调用 String::from("test".to_string())成功即使String没有 From<String> for String .

最佳答案

However, I think that Person::new("test".to_string()) fails because String does not have From<String> forString, so Into` is not derived automatically.

实际上,From (因此 Into )是自反的:

// https://doc.rust-lang.org/src/core/convert/mod.rs.html#545-549

impl<T> From<T> for T {
fn from(t: T) -> T {
t
}
}

关于rust - 为什么 Into<String> 可以接受 String 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67405385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com