diff --git a/crates/voicevox_core/src/infer.rs b/crates/voicevox_core/src/infer.rs index e3698935e..4edef17f8 100644 --- a/crates/voicevox_core/src/infer.rs +++ b/crates/voicevox_core/src/infer.rs @@ -36,10 +36,16 @@ pub(crate) trait InferenceRuntime: 'static { fn run(ctx: Self::RunContext<'_>) -> anyhow::Result>; } +/// `VoiceModel`に対応する、 pub(crate) trait InferenceDomain { type Operation: InferenceOperation; } +/// `InferenceDomain`の推論操作を表す列挙型。 +/// +/// それぞれのバリアントには、対応する`InferenceSignature`が存在するべきである。 +/// +/// `::macros::InferenceOperation`により導出される。 pub(crate) trait InferenceOperation: Copy + Enum { /// `{InferenceInputSignature,InferenceOutputSignature}::PARAM_INFOS`を集めたもの。 /// @@ -54,6 +60,9 @@ pub(crate) trait InferenceOperation: Copy + Enum { >; } +/// `InferenceDomain`の推論操作を表す列挙型。 +/// +/// `::macros::InferenceOperation`により、具体型ごと生成される。 pub(crate) trait InferenceSignature: Sized + Send + 'static { type Domain: InferenceDomain; type Input: InferenceInputSignature; @@ -61,6 +70,9 @@ pub(crate) trait InferenceSignature: Sized + Send + 'static { const OPERATION: ::Operation; } +/// 推論操作の入力シグネチャ。 +/// +/// `::macros::InferenceInputSignature`により導出される。 pub(crate) trait InferenceInputSignature: Send + 'static { type Signature: InferenceSignature; const PARAM_INFOS: &'static [ParamInfo]; @@ -88,6 +100,9 @@ pub(crate) enum InputScalarKind { Float32, } +/// 推論操作の出力シグネチャ。 +/// +/// `::macros::InferenceOutputSignature`により、`TryFrom`も含めて導出される。 pub(crate) trait InferenceOutputSignature: TryFrom, Error = anyhow::Error> + Send { diff --git a/crates/voicevox_core_macros/src/lib.rs b/crates/voicevox_core_macros/src/lib.rs index a197475da..5f2f26809 100644 --- a/crates/voicevox_core_macros/src/lib.rs +++ b/crates/voicevox_core_macros/src/lib.rs @@ -4,7 +4,12 @@ mod inference_domain; use syn::parse_macro_input; -/// Rust APIクレート内で、`crate::infer::InferenceDomain`を実装する。 +/// Rust APIクレート内で、`crate::infer::InferenceDomain`の導出などを行う。 +/// +/// 次のことを行う。 +/// +/// - `InferenceDomain`の導出 +/// - 各バリアントに対する`InferenceInputSignature`の実装を、型ごと生成 /// /// # Example /// @@ -49,7 +54,7 @@ pub fn derive_inference_operation(input: proc_macro::TokenStream) -> proc_macro: from_syn(inference_domain::derive_inference_operation(input)) } -/// Rust APIクレート内で、`crate::infer::InferenceInputSignature`を実装する。 +/// Rust APIクレート内で、`crate::infer::InferenceInputSignature`を導出する。 /// /// # Example /// @@ -72,7 +77,8 @@ pub fn derive_inference_input_signature(input: proc_macro::TokenStream) -> proc_ from_syn(inference_domain::derive_inference_input_signature(input)) } -/// Rust APIクレート内で、`crate::infer::InferenceInputSignature`を実装する。 +/// Rust APIクレート内で`crate::infer::InferenceInputSignature`を、`TryFrom`ごと導出 +/// する。 /// /// # Example ///