From ee7b59340dbe4751374dbd85e05a395821824558 Mon Sep 17 00:00:00 2001 From: Ryo Yamashita Date: Wed, 11 Sep 2024 03:57:50 +0900 Subject: [PATCH] =?UTF-8?q?`crate::asyncs`=E3=81=ABdoc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/VOICEVOX/voicevox_core/pull/830#discussion_r1751106595 --- crates/voicevox_core/src/asyncs.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/crates/voicevox_core/src/asyncs.rs b/crates/voicevox_core/src/asyncs.rs index c10384a4f..b9f5edfdb 100644 --- a/crates/voicevox_core/src/asyncs.rs +++ b/crates/voicevox_core/src/asyncs.rs @@ -1,3 +1,19 @@ +//! 非同期操作の実装の切り替えを行う。 +//! +//! 「[ブロッキング版API]」と「[非同期版API]」との違いはここに集約される +//! …予定。現在は[`crate::voice_model`]のみで利用している。 +//! +//! # Motivation +//! +//! [blocking]クレートで駆動する非同期処理はランタイムが無くても動作する。そのため非同期版APIを +//! もとにブロッキング版APIを構成することはできる。しかし将来WASMビルドすることを考えると、スレッド +//! がまともに扱えないため機能しなくなってしまう。そのためWASM化を見越したブロッキング版APIのため +//! に[`Unstoppable`]を用意している。 +//! +//! [ブロッキング版API]: crate::blocking +//! [非同期版API]: crate::tokio +//! [blocking]: https://docs.rs/crate/blocking + use std::{ io::{self, Read as _, Seek as _, SeekFrom}, path::Path, @@ -12,6 +28,10 @@ pub(crate) trait Async: 'static { } /// "async"としての責務を放棄し、すべてをブロックする。 +/// +/// [ブロッキング版API]用。 +/// +/// [ブロッキング版API]: crate::blocking pub(crate) enum Unstoppable {} impl Async for Unstoppable { @@ -44,7 +64,10 @@ impl Async for Unstoppable { /// [blocking]クレートで駆動する。 /// +/// [非同期版API]用。 +/// /// [blocking]: https://docs.rs/crate/blocking +/// [非同期版API]: crate::tokio pub(crate) enum BlockingThreadPool {} impl Async for BlockingThreadPool {