[英]Does the 'generic blanket impl of ToString' conflict with the 'impl Tostring for char/str/String…' in rust
T 有一個通用的整體 impl ToString,
impl<T> ToString for T where
T: Display + ?Sized,
我還注意到impl ToString for char/str/String
...,以及庫文檔https://doc.rust-lang.org/std/string/trait.ToString.html#implementors中的許多其他類型。
它是否與通用毯子 impl 沖突?
顯然它不沖突,因為它有效☺
但你是對的,它應該沖突。 有一個正在開發的功能稱為“專業化” ,它使編譯器能夠在存在多個impl
時解決沖突,前提是一個比其他的更具體。 在這種情況下,實現顯式類型( char
或String
)比任何泛型impl<T> for T
更具體,因此它可以工作。
這個特性對於一般用途來說還不夠穩定,但它的一個子集被認為足以在 Rust 標准庫中使用,正如你在impl ToString for char
的源代碼中看到的:
#[stable(feature = "char_to_string_specialization", since = "1.46.0")]
impl ToString for char {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.