microcad_core/
core_error.rs

1// Copyright © 2024 The µcad authors <info@ucad.xyz>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4//! Core error
5
6use thiserror::Error;
7
8/// Core error
9#[derive(Debug, Error)]
10pub enum CoreError {
11    /// Not implemented
12    #[error("Not implemented")]
13    NotImplemented,
14
15    /// Unknown file extension to export
16    #[error("Unknown file extension to export to: {0}")]
17    UnknownFileExtension(String),
18
19    /// IO error
20    #[error("IO error: {0}")]
21    IoError(#[from] std::io::Error),
22
23    /// Path error
24    #[error("Path error: {0:?}")]
25    PathError(#[from] core::convert::Infallible),
26
27    /// No suitable exporter found
28    #[error("No suitable exporter found for `{0}`")]
29    NoSuitableExporterFound(String),
30
31    /// No filename specified for export
32    #[error("No filename specified for export")]
33    NoFilenameSpecifiedForExport,
34
35    /// Directory does not exist
36    #[error("Directory does not exist: {0}")]
37    DirectoryDoesNotExist(std::path::PathBuf),
38
39    /// Invalid rendering precision
40    #[error("Invalid rendering precision: {0}")]
41    InvalidRenderPrecision(String),
42
43    /// Parse float error
44    #[error("Parse float error: {0}")]
45    Error(#[from] std::num::ParseFloatError),
46
47    /// Export missing filename
48    #[error("Export missing filename")]
49    ExportMissingFilename,
50
51    /// Cannot detect export format from extension
52    #[error("Cannot detect export format from extension")]
53    CannotDetectExportFormatFromExtension,
54}
55
56/// Core result type
57pub type CoreResult<T> = std::result::Result<T, CoreError>;