Skip to main content

sokuto_core/
error.rs

1//! # エラー型モジュール
2//!
3//! `sokuto-core` クレート内で発生するドメインエラーおよび結果型を定義する。
4
5use thiserror::Error;
6
7/// `sokuto-core` の標準結果型。
8pub type Result<T> = std::result::Result<T, CoreError>;
9
10/// コアモジュールで発生するエラーの列挙型。
11#[derive(Debug, Error, PartialEq)]
12pub enum CoreError {
13    /// 選択肢の数が制限範囲外である場合のエラー(Choice 型は 1〜255 個)。
14    #[error("Choice 型の候補数は 1〜255 個である必要がありますが、{count} 個指定されました。")]
15    InvalidChoiceCount {
16        /// 指定された候補数。
17        count: usize,
18    },
19
20    /// スコア評価尺度の段階数が範囲外である場合のエラー(Score 型は 2〜10 段階)。
21    #[error("Score 型の評価尺度数は 2〜10 段階である必要がありますが、{count} 個指定されました。")]
22    InvalidScoreLevelCount {
23        /// 指定された段階数。
24        count: usize,
25    },
26
27    /// 質問タイプに対する評価基準(Criteria)の形式が不一致である場合のエラー。
28    #[error(
29        "{question_type} 型に対して不正な Criteria 形式が指定されました。期待値: {expected}、実際: {actual}。"
30    )]
31    InvalidCriteriaType {
32        /// 対象の質問タイプ名。
33        question_type: String,
34        /// 期待される形式名。
35        expected: &'static str,
36        /// 実際に指定された形式名。
37        actual: &'static str,
38    },
39
40    /// 必須の評価基準(Criteria)が欠落している場合のエラー。
41    #[error("{question_type} 型には Criteria の指定が必須です。")]
42    MissingCriteria {
43        /// 対象の質問タイプ名。
44        question_type: String,
45    },
46
47    /// 質問リストが空である場合のエラー。
48    #[error("リクエストに含まれる questions が空です。1 件以上の質問を指定してください。")]
49    EmptyQuestions,
50
51    /// 確率分布の計算やエントロピー算出における数値計算エラー。
52    #[error("数値計算エラーが発生しました: {message}。")]
53    MathError {
54        /// エラー詳細メッセージ。
55        message: String,
56    },
57
58    /// シリアライズまたはデシリアライズ失敗エラー。
59    #[error("シリアライズ/デシリアライズに失敗しました: {message}。")]
60    SerializationError {
61        /// エラー詳細メッセージ。
62        message: String,
63    },
64
65    /// 確信度ゲーティング設定のバリデーションエラー。
66    #[error("ゲーティング設定が不正です: {message}。")]
67    InvalidGatingConfig {
68        /// エラー詳細メッセージ。
69        message: String,
70    },
71}