为什么ParseBoolError
会有_priv
字段:
pub struct ParseBoolError {
_priv: (),
}
Run Code Online (Sandbox Code Playgroud)
我不认为该_priv
领域被使用。
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());
}
Run Code Online (Sandbox Code Playgroud)
&str
有Into<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());
Run Code Online (Sandbox Code Playgroud)
在上述情况下,我无法理解String::from("test".to_string())
即使String
没有也可以成功调用From<String> for String
。
rust ×2