1use jam_types::Hash;
2
3#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
4pub enum CodeInfo<T> {
5 Known(T),
6 Undefined(Hash),
7 CodeNotProvided(Hash),
8}
9impl<T> CodeInfo<T> {
10 pub fn as_ref(&self) -> CodeInfo<&T> {
11 match self {
12 CodeInfo::Known(ref x) => CodeInfo::Known(x),
13 CodeInfo::CodeNotProvided(ref h) => CodeInfo::CodeNotProvided(*h),
14 CodeInfo::Undefined(ref h) => CodeInfo::Undefined(*h),
15 }
16 }
17 pub fn map<R>(self, f: impl FnOnce(T) -> R) -> CodeInfo<R> {
18 match self {
19 CodeInfo::Known(x) => CodeInfo::Known(f(x)),
20 CodeInfo::CodeNotProvided(h) => CodeInfo::CodeNotProvided(h),
21 CodeInfo::Undefined(h) => CodeInfo::Undefined(h),
22 }
23 }
24}