簡體   English   中英

在 rust 中,“ToString 的通用毯式實現”是否與“用於 char/str/String 的 impl Tostring...”沖突

[英]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時解決沖突,前提是一個比其他的更具體。 在這種情況下,實現顯式類型( charString )比任何泛型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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM