【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
が別のトレイトの機能を実装していることを前提とする時にこのように書く
上記の場合、FuturesAsyncWriteCompatExt
はfutures_io::AsyncWrite
が実装されているstructに実装されることを前提としますよ。ということ
the bookが普通にわかりやすいので復習はこちら
あとがき
以前は、他人のコードを読んでいて、初見の構文にであった時に何て調べればいいわかなかった 今はChat GPTがあるから初見でもなんとかなる。いい時代になった。