app

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

commit 7bf37f15019af8c7ee6158edea84c8e696f745c0
parent eac72d974c47c02b79803145c10acdf3344423a8
Author: triesap <triesap@radroots.dev>
Date:   Mon, 19 Jan 2026 07:30:04 +0000

app-utils: add resolve error helper

- add is_error helper for resolve results
- export is_error from utils crate
- add unit test for error detection
- keep resolve helpers consistent

Diffstat:
Mcrates/utils/src/lib.rs | 6+++---
Mcrates/utils/src/types.rs | 16++++++++++++++--
2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs @@ -50,9 +50,9 @@ pub use path::{ pub use text::{str_cap, str_cap_words, text_dec, text_enc, ROOT_SYMBOL}; pub use time::{time_now_ms, time_now_s}; pub use types::{ - resolve_err, resolve_ok, FileBytesFormat, FilePath, FilePathBlob, FileMimeType, IdbClientConfig, - ResolveError, ResultBool, ResultId, ResultObj, ResultPass, ResultPublicKey, ResultSecretKey, - ResultsList, ValidationRegex, ValStr, WebFilePath, + is_error, resolve_err, resolve_ok, FileBytesFormat, FilePath, FilePathBlob, FileMimeType, + IdbClientConfig, ResolveError, ResultBool, ResultId, ResultObj, ResultPass, ResultPublicKey, + ResultSecretKey, ResultsList, ValidationRegex, ValStr, WebFilePath, }; pub use unit::{ mass_to_g, parse_area_unit, parse_area_unit_default, parse_mass_unit, parse_mass_unit_default, diff --git a/crates/utils/src/types.rs b/crates/utils/src/types.rs @@ -94,12 +94,16 @@ pub fn resolve_err<T>(err: RadrootsAppUtilsError) -> ResolveError<T> { Err(err) } +pub fn is_error<T>(value: &ResolveError<T>) -> bool { + value.is_err() +} + #[cfg(test)] mod tests { use super::{ resolve_err, resolve_ok, FileBytesFormat, FilePath, FilePathBlob, IdbClientConfig, - ResultBool, ResultId, ResultObj, ResultPass, ResultPublicKey, ResultSecretKey, ResultsList, - ValidationRegex, ValStr, WebFilePath, + is_error, ResultBool, ResultId, ResultObj, ResultPass, ResultPublicKey, ResultSecretKey, + ResultsList, ValidationRegex, ValStr, WebFilePath, }; use crate::error::RadrootsAppUtilsError; use regex::Regex; @@ -179,6 +183,14 @@ mod tests { } #[test] + fn is_error_returns_true_for_err() { + let ok = resolve_ok(1); + assert!(!is_error(&ok)); + let err = resolve_err::<()>(RadrootsAppUtilsError::InvalidInput); + assert!(is_error(&err)); + } + + #[test] fn validation_regex_tracks_patterns() { let regex = Regex::new("^a+$").expect("regex"); let value = Box::leak(Box::new(regex));