VOICEVOX / voicevox_core

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのコア
https://voicevox.hiroshiba.jp/
MIT License
844 stars 114 forks source link

`blocking`版と`tokio`版の`impl`を`mod`内に移す #710

Closed qryxip closed 8 months ago

qryxip commented 8 months ago

内容

702 で実装したblocking版のimpltokio版のimplは、Gitのdiffを出さないためだけにこうしていました。

impl self::blocking::PublicStruct {
    // …
}

impl self::tokio::PublicStruct {
    // …
}

pub(crate) mod blocking {
    pub struct PublicStruct;
}

pub(crate) mod tokio {
    pub struct PublicStruct;
}

これを次のようにします。

pub(crate) mod blocking {
    pub struct PublicStruct;

    impl self::PublicStruct {
        // …
    }
}

pub(crate) mod tokio {
    pub struct PublicStruct;

    impl self::PublicStruct {
        // …
    }
}

関連 Issue

その他

qryxip commented 8 months ago

まずmodでのuseですが、次の2つはほぼ同じ意味です。

// ./blocking.rs内に内容を書く
pub(crate) mod blocking;
pub(crate) mod blocking {
    // 内容
}

本来blocking.rsやtokio.rsと分けるところを、見やすさのために同じファイルに含めている状態です。

そしてどちらにおいてもuseは子モジュールに影響しません。親モジュールのuseを継承するには

use super::*;

とする必要があります。

今回は #708 の方針を継続して、すべて明示的なインポートとしています。

Hiroshiba commented 8 months ago

あ、そうなんですね!!! Pythonの気持ちで考えていました。 以前は親モジュールに直接implしていたから親のuseを使えていたけど、子モジュールのimplになったから子モジュールでuseする必要が出てきた、という理解です。 ありがとうございます!!