jam_tooling/
code_info.rs

1use jam_types::CodeHash;
2
3#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
4pub enum CodeInfo<T> {
5	Known(T),
6	Undefined(CodeHash),
7	CodeNotProvided(CodeHash),
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}