Skip to main content

ecoord_core/
error.rs

1use crate::FrameId;
2use crate::tree::transform::TransformId;
3use chrono::{DateTime, Utc};
4use thiserror::Error;
5
6#[derive(Error, Debug)]
7pub enum Error {
8    #[error(transparent)]
9    CoordsError(#[from] crate::coords::error::Error),
10
11    #[error("transform with id `{0}` not available")]
12    InvalidTransformId(TransformId),
13
14    #[error("invalid frame id `{0}`")]
15    InvalidFrameId(FrameId),
16
17    #[error("no transforms")]
18    NoTransforms(),
19
20    #[error("no transforms")]
21    ContainsDynamicTransform(),
22
23    #[error("duplicate timestamp `{0}`")]
24    DuplicateTimestamp(DateTime<Utc>),
25
26    #[error("no transform path found for `{0}`")]
27    NoTransformPath(TransformId),
28
29    #[error("multiple transform path found for `{0}`")]
30    MultipleTransformPaths(TransformId),
31
32    #[error("no timestamp")]
33    MissingTimestamp(),
34
35    #[error("transforms not sorted by timestamp")]
36    TransformsNotSortedByTime(),
37
38    #[error("transforms must be sorted strictly ascending by timestamp")]
39    TransformsNotSorted { transform_id: TransformId },
40
41    #[error("collision")]
42    ChannelTransformCollisions { transform_id: TransformId },
43}