【Rust】トレイト名の後にコロン(:)でトレイトがつく構文

※この内容は The book に記載の内容です。

こういうやつ

pub trait FuturesAsyncWriteCompatExt: futures_io::AsyncWrite {  // <-- ここ!
    /// Wraps `self` with a compatibility layer that implements
    /// `tokio::io::AsyncWrite`.
    fn compat_write(self) -> Compat<Self>
    where
        Self: Sized,
    {
        Compat::new(self)
    }
}

その名も「スーパートレイト」

selfが別のトレイトの機能を実装していることを前提とする時にこのように書く

上記の場合、FuturesAsyncWriteCompatExtfutures_io::AsyncWriteが実装されているstructに実装されることを前提としますよ。ということ

the bookが普通にわかりやすいので復習はこちら

doc.rust-jp.rs

あとがき

以前は、他人のコードを読んでいて、初見の構文にであった時に何て調べればいいわかなかった 今はChat GPTがあるから初見でもなんとかなる。いい時代になった。