commit 0fcc8dc304631c4140ae8d5ca81a756635cc6b71
parent b261738f55f9c7bcc90ec84c308a8d28eea3d568
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 07:11:58 +0000
app-utils: add result wrapper types
- add result id and object wrappers
- add results list and key wrappers
- export new result helper types
- add unit tests for result structs
Diffstat:
2 files changed, 59 insertions(+), 2 deletions(-)
diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs
@@ -26,4 +26,7 @@ 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, ResolveError, ResultPass};
+pub use types::{
+ resolve_err, resolve_ok, ResolveError, ResultBool, ResultId, ResultObj, ResultPass,
+ ResultPublicKey, ResultSecretKey, ResultsList,
+};
diff --git a/crates/utils/src/types.rs b/crates/utils/src/types.rs
@@ -9,6 +9,33 @@ pub struct ResultPass {
pub pass: bool,
}
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct ResultId {
+ pub id: String,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct ResultObj<T> {
+ pub result: T,
+}
+
+pub type ResultBool = ResultObj<bool>;
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct ResultsList<T> {
+ pub results: Vec<T>,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct ResultPublicKey {
+ pub public_key: String,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct ResultSecretKey {
+ pub secret_key: String,
+}
+
impl ResultPass {
pub const fn ok() -> Self {
Self { pass: true }
@@ -25,7 +52,10 @@ pub fn resolve_err<T>(err: RadrootsAppUtilsError) -> ResolveError<T> {
#[cfg(test)]
mod tests {
- use super::{resolve_err, resolve_ok, ResultPass};
+ use super::{
+ resolve_err, resolve_ok, ResultBool, ResultId, ResultObj, ResultPass, ResultPublicKey,
+ ResultSecretKey, ResultsList,
+ };
use crate::error::RadrootsAppUtilsError;
#[test]
@@ -46,4 +76,28 @@ mod tests {
.expect_err("err");
assert_eq!(err, RadrootsAppUtilsError::Unavailable);
}
+
+ #[test]
+ fn result_types_store_values() {
+ let id = ResultId {
+ id: "id".to_string(),
+ };
+ assert_eq!(id.id, "id");
+ let obj = ResultObj { result: 5 };
+ assert_eq!(obj.result, 5);
+ let bool_obj: ResultBool = ResultObj { result: true };
+ assert!(bool_obj.result);
+ let list = ResultsList {
+ results: vec![1, 2],
+ };
+ assert_eq!(list.results, vec![1, 2]);
+ let public_key = ResultPublicKey {
+ public_key: "pub".to_string(),
+ };
+ assert_eq!(public_key.public_key, "pub");
+ let secret_key = ResultSecretKey {
+ secret_key: "sec".to_string(),
+ };
+ assert_eq!(secret_key.secret_key, "sec");
+ }
}