Skip to main content

reifydb_codec/
error.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use thiserror::Error;
5
6#[derive(Debug, Error, PartialEq)]
7pub enum EncodeError {
8	#[error("unsupported type: {0}")]
9	UnsupportedType(String),
10
11	#[error("option nesting depth {depth} exceeds the maximum of {max}")]
12	OptionDepthTooDeep {
13		depth: u32,
14		max: u8,
15	},
16
17	#[error("serialization failed: {0}")]
18	Serialization(String),
19
20	#[error("compression failed: {0}")]
21	Compression(String),
22}
23
24#[derive(Debug, Error, PartialEq)]
25pub enum DecodeError {
26	#[error("unexpected EOF: expected {expected} bytes, got {available}")]
27	UnexpectedEof {
28		expected: usize,
29		available: usize,
30	},
31
32	#[error("invalid magic: 0x{0:08X}")]
33	InvalidMagic(u32),
34
35	#[error("unsupported version: {0}")]
36	UnsupportedVersion(u16),
37
38	#[error("unknown type code: {0}")]
39	UnknownTypeCode(u8),
40
41	#[error("unknown encoding: {0}")]
42	UnknownEncoding(u8),
43
44	#[error("reserved tag byte: 0x{0:02X}")]
45	ReservedTag(u8),
46
47	#[error("trailing bytes: {0} remaining after decode")]
48	TrailingBytes(usize),
49
50	#[error("invalid data: {0}")]
51	InvalidData(String),
52
53	#[error("unsupported type: {0}")]
54	UnsupportedType(String),
55
56	#[error("column '{column_name}' decode failed{}: {source}", row_index.map(|r| format!(" at row {}", r)).unwrap_or_default())]
57	ColumnDecodeFailed {
58		column_name: String,
59		row_index: Option<usize>,
60		source: Box<DecodeError>,
61	},
62
63	#[error("deserialization failed: {0}")]
64	Deserialization(String),
65
66	#[error("decompression failed: {0}")]
67	Decompression(String),
68}