commit fe6ceaa298a4b22801a349355e33689bf0d0fca2
parent 5f4e9e6444607f2ca517601e2dafb9561746dbcf
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 06:40:12 +0000
app-utils: add resolve result types
- add ResultPass and ResolveError types
- add ok and err helper constructors
- export resolve types from lib
- add unit tests for resolve helpers
Diffstat:
2 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs
@@ -1,3 +1,6 @@
#![forbid(unsafe_code)]
pub mod error;
+pub mod types;
+
+pub use types::{resolve_err, resolve_ok, ResolveError, ResultPass};
diff --git a/crates/utils/src/types.rs b/crates/utils/src/types.rs
@@ -0,0 +1,49 @@
+#![forbid(unsafe_code)]
+
+use crate::error::RadrootsAppUtilsError;
+
+pub type ResolveError<T> = Result<T, RadrootsAppUtilsError>;
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct ResultPass {
+ pub pass: bool,
+}
+
+impl ResultPass {
+ pub const fn ok() -> Self {
+ Self { pass: true }
+ }
+}
+
+pub fn resolve_ok<T>(value: T) -> ResolveError<T> {
+ Ok(value)
+}
+
+pub fn resolve_err<T>(err: RadrootsAppUtilsError) -> ResolveError<T> {
+ Err(err)
+}
+
+#[cfg(test)]
+mod tests {
+ use super::{resolve_err, resolve_ok, ResultPass};
+ use crate::error::RadrootsAppUtilsError;
+
+ #[test]
+ fn result_pass_is_true() {
+ let pass = ResultPass::ok();
+ assert!(pass.pass);
+ }
+
+ #[test]
+ fn resolve_ok_returns_value() {
+ let value = resolve_ok(5).expect("value");
+ assert_eq!(value, 5);
+ }
+
+ #[test]
+ fn resolve_err_returns_error() {
+ let err = resolve_err::<()>(RadrootsAppUtilsError::Unavailable)
+ .expect_err("err");
+ assert_eq!(err, RadrootsAppUtilsError::Unavailable);
+ }
+}