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
18#[derive(Debug, Error, PartialEq)]
19pub enum DecodeError {
20	#[error("unexpected EOF: expected {expected} bytes, got {available}")]
21	UnexpectedEof {
22		expected: usize,
23		available: usize,
24	},
25
26	#[error("invalid magic: 0x{0:08X}")]
27	InvalidMagic(u32),
28
29	#[error("unsupported version: {0}")]
30	UnsupportedVersion(u16),
31
32	#[error("unknown type code: {0}")]
33	UnknownTypeCode(u8),
34
35	#[error("unknown encoding: {0}")]
36	UnknownEncoding(u8),
37
38	#[error("reserved tag byte: 0x{0:02X}")]
39	ReservedTag(u8),
40
41	#[error("trailing bytes: {0} remaining after decode")]
42	TrailingBytes(usize),
43
44	#[error("invalid data: {0}")]
45	InvalidData(String),
46
47	#[error("unsupported type: {0}")]
48	UnsupportedType(String),
49
50	#[error("column '{column_name}' decode failed{}: {source}", row_index.map(|r| format!(" at row {}", r)).unwrap_or_default())]
51	ColumnDecodeFailed {
52		column_name: String,
53		row_index: Option<usize>,
54		source: Box<DecodeError>,
55	},
56}