app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

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:
Mcrates/utils/src/lib.rs | 3+++
Acrates/utils/src/types.rs | 49+++++++++++++++++++++++++++++++++++++++++++++++++
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); + } +}