REslava.Result — Core Type Hierarchy (v1.12.1)
Legend
- blue: interfaces
- orange: abstract classes
- green: concrete classes
- purple: struct types
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
class IReason:::interface
class ISuccess:::interface
class IError:::interface
class Reason:::abstract
class Reason_TReason["Reason<TReason>"]:::abstract
class Success:::concrete
class Error:::concrete
class ExceptionError:::concrete
class ConversionError:::concrete
IReason <|.. ISuccess : extends
IReason <|.. IError : extends
IReason <|.. Reason : implements
Reason <|-- Reason_TReason : extends
Reason_TReason <|-- Success : extends~Success~
Reason_TReason <|-- Error : extends~Error~
Reason_TReason <|-- ExceptionError : extends~ExceptionError~
Reason_TReason <|-- ConversionError : extends~ConversionError~
Success ..|> ISuccess : implements
Error ..|> IError : implements
ExceptionError ..|> IError : implements
ConversionError ..|> IError : implements
classDef interface fill:#e1f5ff,stroke:#0288d1,stroke-width:2px,color:black
classDef abstract fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:black
classDef concrete fill:#d4edda,stroke:#388e3c,stroke-width:2px,color:black
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
class IResultResponse:::interface
class IResultResponse_TValue["IResultResponse<TValue>"]:::interface
class Result:::concrete
class Result_TValue["Result<TValue>"]:::concrete
class IReason:::interface
class TValue:::type
IResultResponse <|-- IResultResponse_TValue : extends
IResultResponse <|.. Result : implements
Result <|-- Result_TValue : extends
Result_TValue ..|> IResultResponse_TValue : implements
Result o-- IReason : contains reasons
Result_TValue o-- TValue : contains value
classDef interface fill:#e1f5ff,stroke:#0288d1,stroke-width:2px,color:black
classDef concrete fill:#d4edda,stroke:#388e3c,stroke-width:2px,color:black
classDef type fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:black
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
class Maybe_T["Maybe<T>"]:::type {
+bool HasValue
+T Value
+static Some(T value)
+static None()
}
class OneOf_T1_T2["OneOf<T1, T2>"]:::type {
+bool IsT1
+bool IsT2
+Match()
}
class OneOf_T1_T2_T3["OneOf<T1, T2, T3>"]:::type {
+bool IsT1
+bool IsT2
+bool IsT3
+Match()
}
class OneOf_T1_T2_T3_T4["OneOf<T1, T2, T3, T4>"]:::type {
+bool IsT1
+bool IsT2
+bool IsT3
+bool IsT4
+Match()
}
class IEquatable:::interface
Maybe_T ..|> IEquatable : implements
OneOf_T1_T2 ..|> IEquatable : implements
OneOf_T1_T2_T3 ..|> IEquatable : implements
OneOf_T1_T2_T3_T4 ..|> IEquatable : implements
classDef interface fill:#e1f5ff,stroke:#0288d1,stroke-width:2px,color:black
classDef type fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:black
Reason<TReason> uses the Curiously Recurring Template Pattern (CRTP) for type-safe reason hierarchies
Maybe<T>, OneOf<T1,T2>, OneOf<T1,T2,T3>, and OneOf<T1,T2,T3,T4> are readonly structs — zero heap allocations
Result and Result<T> are classes — immutable with ImmutableList<IReason> for reasons collection
IResultResponse<out TValue> is covariant in TValue for polymorphic result handling