pub struct ExitCode(/* private fields */);Expand description
CLI exit code with semantic meaning.
Provides type-safe exit codes following Unix conventions. Success is 0, errors are non-zero with specific meanings.
§Examples
use mcp_execution_core::cli::ExitCode;
let code = ExitCode::SUCCESS;
assert_eq!(code.as_i32(), 0);
assert!(code.is_success());
let code = ExitCode::from_i32(1).unwrap();
assert!(!code.is_success());
// Outside the valid process exit code range (0..=255) is rejected.
assert!(ExitCode::from_i32(-1).is_none());
assert!(ExitCode::from_i32(256).is_none());Implementations§
Source§impl ExitCode
impl ExitCode
Sourcepub const SUCCESS: Self
pub const SUCCESS: Self
Successful execution (exit code 0).
§Examples
use mcp_execution_core::cli::ExitCode;
assert_eq!(ExitCode::SUCCESS.as_i32(), 0);Sourcepub const ERROR: Self
pub const ERROR: Self
General error (exit code 1).
§Examples
use mcp_execution_core::cli::ExitCode;
assert_eq!(ExitCode::ERROR.as_i32(), 1);Sourcepub const INVALID_INPUT: Self
pub const INVALID_INPUT: Self
Invalid input or arguments (exit code 2).
§Examples
use mcp_execution_core::cli::ExitCode;
assert_eq!(ExitCode::INVALID_INPUT.as_i32(), 2);Sourcepub const SERVER_ERROR: Self
pub const SERVER_ERROR: Self
Server connection or communication error (exit code 3).
§Examples
use mcp_execution_core::cli::ExitCode;
assert_eq!(ExitCode::SERVER_ERROR.as_i32(), 3);Sourcepub const TIMEOUT: Self
pub const TIMEOUT: Self
Execution timeout or resource limit exceeded (exit code 4).
§Examples
use mcp_execution_core::cli::ExitCode;
assert_eq!(ExitCode::TIMEOUT.as_i32(), 4);Sourcepub const fn from_i32(code: i32) -> Option<Self>
pub const fn from_i32(code: i32) -> Option<Self>
Creates an exit code from an integer value.
Returns None if code falls outside 0..=255. This is not a universal OS-level
ceiling — on Unix, std::process::exit truncates its argument to the low 8 bits, but
on Windows it delivers the full i32 to the parent process via ExitProcess — so
0..=255 is this API’s own deliberate choice (matching every named const this type
already defines, and the conventional Unix exit-code range this CLI targets), not
something every platform enforces for it. Rejecting an out-of-range value here surfaces
a construction mistake immediately rather than silently producing an ExitCode whose
reported value could be misleading once actually reported to the OS.
§Examples
use mcp_execution_core::cli::ExitCode;
let code = ExitCode::from_i32(0).unwrap();
assert_eq!(code, ExitCode::SUCCESS);
assert!(ExitCode::from_i32(-1).is_none());
assert!(ExitCode::from_i32(256).is_none());Sourcepub const fn as_i32(&self) -> i32
pub const fn as_i32(&self) -> i32
Returns the exit code as an integer.
§Examples
use mcp_execution_core::cli::ExitCode;
assert_eq!(ExitCode::SUCCESS.as_i32(), 0);
assert_eq!(ExitCode::ERROR.as_i32(), 1);Sourcepub const fn is_success(&self) -> bool
pub const fn is_success(&self) -> bool
Checks if the exit code represents success.
§Examples
use mcp_execution_core::cli::ExitCode;
assert!(ExitCode::SUCCESS.is_success());
assert!(!ExitCode::ERROR.is_success());