/// ACC-1643 错误类型定义 use std::fmt; #[derive(Debug, Clone)] pub enum Acc1643Error { /// 未授权操作 Unauthorized { operator: String, required_role: String, }, /// 文档不存在 DocumentNotFound { doc_id: String, }, /// 文档类型无效 InvalidDocumentType { doc_type: String, }, /// 文档已存在 DocumentAlreadyExists { doc_id: String, }, /// 文档验证失败 DocumentVerificationFailed { doc_id: String, reason: String, }, /// 文档版本冲突 VersionConflict { doc_id: String, expected_version: u64, actual_version: u64, }, /// Merkle证明无效 InvalidMerkleProof, /// 宪法收据无效 InvalidConstitutionalReceipt { receipt_hash: String, }, } impl fmt::Display for Acc1643Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Acc1643Error::Unauthorized { operator, required_role } => { write!(f, "Unauthorized: {} requires role {}", operator, required_role) } Acc1643Error::DocumentNotFound { doc_id } => { write!(f, "Document not found: {}", doc_id) } Acc1643Error::InvalidDocumentType { doc_type } => { write!(f, "Invalid document type: {}", doc_type) } Acc1643Error::DocumentAlreadyExists { doc_id } => { write!(f, "Document already exists: {}", doc_id) } Acc1643Error::DocumentVerificationFailed { doc_id, reason } => { write!(f, "Document verification failed for {}: {}", doc_id, reason) } Acc1643Error::VersionConflict { doc_id, expected_version, actual_version } => { write!( f, "Version conflict for {}: expected {}, got {}", doc_id, expected_version, actual_version ) } Acc1643Error::InvalidMerkleProof => { write!(f, "Invalid Merkle proof") } Acc1643Error::InvalidConstitutionalReceipt { receipt_hash } => { write!(f, "Invalid constitutional receipt: {}", receipt_hash) } } } } impl std::error::Error for Acc1643Error {} pub type Result = std::result::Result;