1#[derive(Debug, Clone, PartialEq, thiserror::Error)]
3pub enum EncodeError {
4 #[error("field `{field}`: value does not fit in {bits} bits")]
6 ValueOutOfRange { field: &'static str, bits: u8 },
7 #[error("field `{field}`: length {actual} exceeds limit {limit}")]
9 LimitExceeded {
10 field: &'static str,
11 limit: u64,
12 actual: u64,
13 },
14 #[error("recursive type nesting exceeded 64 levels")]
16 RecursionLimitExceeded,
17}
18
19#[derive(Debug, Clone, PartialEq, thiserror::Error)]
21pub enum DecodeError {
22 #[error("unexpected end of input")]
24 UnexpectedEof,
25 #[error("invalid UTF-8 in string field")]
27 InvalidUtf8,
28 #[error("invalid or overlong varint encoding")]
30 InvalidVarint,
31 #[error("field `{field}`: length {actual} exceeds limit {limit}")]
33 LimitExceeded {
34 field: &'static str,
35 limit: u64,
36 actual: u64,
37 },
38 #[error("unknown enum variant {value} for type `{type_name}`")]
40 UnknownEnumVariant { type_name: &'static str, value: u64 },
41 #[error("unknown union variant {discriminant} for type `{type_name}`")]
43 UnknownUnionVariant {
44 type_name: &'static str,
45 discriminant: u64,
46 },
47 #[error("decoded removed field ordinal {ordinal} (removed in {removed_in}): {reason}")]
49 RemovedField {
50 ordinal: u16,
51 removed_in: &'static str,
52 reason: &'static str,
53 },
54 #[error("field `{field}`: {message}")]
56 InvalidValue {
57 field: &'static str,
58 message: String,
59 },
60 #[error("recursive type nesting exceeded 64 levels")]
62 RecursionLimitExceeded,
63 #[error("schema hash mismatch")]
65 SchemaMismatch { local: [u8; 32], remote: [u8; 32] },
66}