Crates.io | cdumay_core |
lib.rs | cdumay_core |
version | 0.1.6 |
created_at | 2024-07-17 13:35:34.824894+00 |
updated_at | 2025-05-26 12:34:59.137324+00 |
description | A Rust Library for standard code |
homepage | https://github.com/cdumay/cdumay_core |
repository | https://github.com/cdumay/cdumay_core |
max_upload_size | |
id | 1306181 |
size | 81,843 |
cdumay_core
is a lightweight crate that provides custom Error
and Result
types
as drop-in replacements for Rust’s standard std::result::Result
and std::error::Error
,
with the primary goal of supporting serialization and deserialization via [serde
].
Rust's standard error types do not implement Serialize
and Deserialize
due to
their generic and trait-based nature. This crate provides concrete, serializable
alternatives suitable for applications like:
Error
] — A serializable error type with a message and optional cause.Result<T>
] — A simple alias for crate::result::Result<T, Error>
, fully serializable.serde::{Serialize, Deserialize}
.use cdumay_core::{ErrorBuilder, Result};
fn do_work() -> Result<i32> {
Err(
ErrorBuilder::default()
.with_message("Something went wrong".to_string())
.build()
).into()
}
utoipa
: Implement utoipa::ToSchema
to Error
actix-web
: Allow to use Result
and Error
with actixThis crate is designed for applications that require custom serialization logic.
It is not a full replacement for std::result::Result
in all use cases, especially
where standard error traits are expected.
Use the provided derive macros to define your error and error kind structs:
use cdumay_core::{define_errors, define_kinds};
define_kinds! {
UnknownError = (500, "Unexpected error"),
IoError = (500, "IO error")
}
define_errors! {
Unexpected = UnknownError,
FileRead = IoError,
Forbidden = (IoError, 403), // kind code overwrite 500 -> 403
FileNotFound = (IoError, 404, "File not found") // kind description overwrite
}