acme_tensor/shape/
error.rs

1/*
2    Appellation: error <mod>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5#[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 {}