tea_context/
diagnostic.rs1use crate::{ConflictKey, PromptSegmentId};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
5pub enum PromptDiagnosticCode {
6 ExactDuplicate,
8 ConflictShadowed,
10 ProtectedConflict,
12 OmittedForBudget,
14 TruncatedForBudget,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq)]
20pub struct PromptDiagnostic {
21 code: PromptDiagnosticCode,
22 segment_id: PromptSegmentId,
23 winner_id: Option<PromptSegmentId>,
24 conflict_key: Option<ConflictKey>,
25}
26
27impl PromptDiagnostic {
28 pub(crate) const fn new(
29 code: PromptDiagnosticCode,
30 segment_id: PromptSegmentId,
31 winner_id: Option<PromptSegmentId>,
32 conflict_key: Option<ConflictKey>,
33 ) -> Self {
34 Self {
35 code,
36 segment_id,
37 winner_id,
38 conflict_key,
39 }
40 }
41 #[must_use]
43 pub const fn code(&self) -> PromptDiagnosticCode {
44 self.code
45 }
46 #[must_use]
48 pub const fn segment_id(&self) -> &PromptSegmentId {
49 &self.segment_id
50 }
51 #[must_use]
53 pub const fn winner_id(&self) -> Option<&PromptSegmentId> {
54 self.winner_id.as_ref()
55 }
56 #[must_use]
58 pub const fn conflict_key(&self) -> Option<&ConflictKey> {
59 self.conflict_key.as_ref()
60 }
61}