acme_tensor/shape/
error.rs1#[cfg(feature = "serde")]
6use serde::{Deserialize, Serialize};
7use strum::{Display, EnumCount, EnumIs, EnumIter, EnumProperty, EnumString, VariantNames};
8
9pub type ShapeResult<T = ()> = std::result::Result<T, ShapeError>;
10
11#[cfg_attr(
12 feature = "serde",
13 derive(Deserialize, Serialize),
14 serde(rename_all = "snake_case", untagged)
15)]
16#[derive(
17 Clone,
18 Copy,
19 Debug,
20 Display,
21 EnumCount,
22 EnumIs,
23 EnumIter,
24 EnumProperty,
25 EnumString,
26 Eq,
27 Hash,
28 Ord,
29 PartialEq,
30 PartialOrd,
31 VariantNames,
32)]
33#[repr(usize)]
34#[strum(serialize_all = "snake_case")]
35pub enum ShapeError {
36 #[strum(props(desc = "Dimension mismatch"))]
37 DimensionMismatch,
38 #[strum(props(desc = "incompatible shapes"))]
39 IncompatibleShapes,
40 IncompatibleLayout,
41 InvalidAxis,
42 InvalidShape,
43 MismatchedElements,
44 NotSquare,
45 OutOfBounds,
46 Overflow,
47 Unsupported,
48}
49
50unsafe impl Send for ShapeError {}
51
52unsafe impl Sync for ShapeError {}
53
54impl std::error::Error for ShapeError {}