use std::{error::Error, fmt}; #[derive(Clone, Debug, PartialEq, Eq)] pub enum VisualNovelDomainError { MissingProfileId, MissingRunId, MissingOwnerUserId, MissingClientEventId, MissingActionText, InvalidChoiceId, FreeTextDisabled, HistoryRegenerationDisabled, HistoryEntryNotFound, InvalidHistorySource, InvalidRuntimeStep, InvalidJson, EmptyRuntimeSteps, } impl fmt::Display for VisualNovelDomainError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let message = match self { Self::MissingProfileId => "visual novel profile_id 缺失", Self::MissingRunId => "visual novel run_id 缺失", Self::MissingOwnerUserId => "visual novel owner_user_id 缺失", Self::MissingClientEventId => "visual novel client_event_id 缺失", Self::MissingActionText => "visual novel 行动文本缺失", Self::InvalidChoiceId => "visual novel choice_id 不合法", Self::FreeTextDisabled => "visual novel 当前作品未开启自由行动", Self::HistoryRegenerationDisabled => "visual novel 当前作品未开启历史重生成", Self::HistoryEntryNotFound => "visual novel history entry 不存在", Self::InvalidHistorySource => "visual novel 只能从助手历史节点重生成", Self::InvalidRuntimeStep => "visual novel runtime step 不合法", Self::InvalidJson => "visual novel JSON 解析失败", Self::EmptyRuntimeSteps => "visual novel runtime step 不能为空", }; write!(f, "{message}") } } impl Error for VisualNovelDomainError {}