Now let's take a silly one
1use knot_cob::{ChangeId, CobError};
2use knot_git::GitError;
3use knot_types::TypeName;
4
5#[derive(Debug, thiserror::Error)]
6pub enum IndexError {
7 #[error(transparent)]
8 Cob(#[from] CobError),
9 #[error(transparent)]
10 Git(#[from] GitError),
11 #[error("expected at most one {type_name} object, found {count}")]
12 Ambiguous { type_name: TypeName, count: usize },
13 #[error("change {change} in {type_name} projection does not decode: {reason}")]
14 Decode {
15 change: ChangeId,
16 type_name: TypeName,
17 reason: String,
18 },
19 #[error("change {change} is {found} change in {expected} projection")]
20 UnexpectedType {
21 change: ChangeId,
22 expected: TypeName,
23 found: TypeName,
24 },
25}