ringkernel_core/resource/
error.rs1use std::fmt;
4
5#[derive(Debug, Clone)]
7pub enum ResourceError {
8 MemoryLimitExceeded {
10 requested: u64,
12 current: u64,
14 max: u64,
16 },
17 InsufficientSystemMemory {
19 requested: u64,
21 available: u64,
23 margin: u64,
25 },
26 AllocationFailed(String),
28 AlreadyReserved(String),
30}
31
32impl fmt::Display for ResourceError {
33 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
34 match self {
35 ResourceError::MemoryLimitExceeded {
36 requested,
37 current,
38 max,
39 } => {
40 write!(
41 f,
42 "Memory limit exceeded: requested {} bytes, current usage {} bytes, limit {} bytes",
43 requested, current, max
44 )
45 }
46 ResourceError::InsufficientSystemMemory {
47 requested,
48 available,
49 margin,
50 } => {
51 write!(
52 f,
53 "Insufficient system memory: requested {} bytes, available {} bytes (margin: {} bytes)",
54 requested, available, margin
55 )
56 }
57 ResourceError::AllocationFailed(msg) => {
58 write!(f, "Resource allocation failed: {}", msg)
59 }
60 ResourceError::AlreadyReserved(msg) => {
61 write!(f, "Resource already reserved: {}", msg)
62 }
63 }
64 }
65}
66
67impl std::error::Error for ResourceError {}
68
69pub type ResourceResult<T> = Result<T, ResourceError>;