1use std::io;
2
3use thiserror::Error;
4
5use crate::geometry::ByteOffset;
6use crate::geometry::ByteRange;
7
8pub type Result<T> = std::result::Result<T, Error>;
9
10#[derive(Debug, Error)]
11pub enum Error {
12 #[error("range {range} exceeds source length {len}")]
13 OutOfBounds { range: ByteRange, len: ByteOffset },
14
15 #[error("invalid range: start {start} > end {end}")]
16 InvalidRange { start: ByteOffset, end: ByteOffset },
17
18 #[error("column count must be non-zero")]
19 ZeroColumns,
20
21 #[error("I/O error while reading {range}")]
22 Io {
23 range: ByteRange,
24 #[source]
25 source: io::Error,
26 },
27}