prism3_value/
lib.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025.
4 *    3-Prism Co. Ltd.
5 *
6 *    All rights reserved.
7 *
8 ******************************************************************************/
9//! # Value Processing Framework
10//!
11//! Provides type-safe value storage and access functionality, supporting single values, multiple values, and named values.
12//!
13//! # Module Description
14//!
15//! - `error` - Defines error types related to value processing
16//! - `value` - Single value container implementation
17//! - `multi_values` - Multiple values container implementation
18//! - `named` - Named value implementation
19//!
20//! # Core Features
21//!
22//! - **Type Safety**: Compile-time type checking to avoid runtime type errors
23//! - **Zero-Cost Abstraction**: Implemented using enums with no additional runtime overhead
24//! - **Multi-Value Support**: Unified interface for single and multiple value access
25//! - **Naming Support**: Provides naming functionality for values for easy identification and lookup
26//! - **Type Conversion**: Provides two sets of APIs for type checking and type conversion
27//!
28//! # Usage Examples
29//!
30//! ## Single Value Operations
31//!
32//! ```rust,ignore
33//! use common_rs::util::value::Value;
34//!
35//! // Create and access a single value
36//! let value = Value::Int32(42);
37//! assert_eq!(value.get_int32().unwrap(), 42);
38//!
39//! // Type conversion
40//! let text = value.as_string().unwrap();
41//! assert_eq!(text, "42");
42//! ```
43//!
44//! ## Multiple Values Operations
45//!
46//! ```rust,ignore
47//! use common_rs::util::value::MultiValues;
48//!
49//! // Create and access multiple values
50//! let mut values = MultiValues::Int32(vec![1, 2, 3]);
51//! assert_eq!(values.count(), 3);
52//!
53//! // Add values
54//! values.add_int32(4).unwrap();
55//! assert_eq!(values.get_int32s().unwrap(), &[1, 2, 3, 4]);
56//! ```
57//!
58//! ## Named Value Operations
59//!
60//! ```rust,ignore
61//! use common_rs::util::value::{NamedValue, Value};
62//!
63//! // Create a named value
64//! let config = NamedValue::new("port", Value::Int32(8080));
65//! assert_eq!(config.name(), "port");
66//! assert_eq!(config.get_int32().unwrap(), 8080);
67//! ```
68//!
69//! # Author
70//!
71//! Haixing Hu
72
73// Sub-modules
74mod error;
75pub mod multi_values;
76mod named_multi_values;
77mod named_value;
78mod value;
79
80// Public exports
81pub use error::{ValueError, ValueResult};
82pub use multi_values::MultiValues;
83pub use named_multi_values::NamedMultiValues;
84pub use named_value::NamedValue;
85pub use value::Value;