1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
//! `novax-data` is a crate designed to facilitate data handling and conversions in blockchain-based applications.
//!
//! This crate provides a robust set of types and utility functions to ease the conversion and management
//! of data structures when working with MultiversX virtual machine and the associated blockchain technology.
//! It encompasses common patterns for data conversion and parsing, especially around address representations,
//! and error handling.
//!
//! # Core Concepts
//!
//! - **Native and Managed Type Conversion**:
//! `NativeConvertible` and `ManagedConvertible` are traits provided to bridge the gap between complex smart contract types
//! managed by the MultiversX virtual machine and common Rust types. They facilitate seamless conversions back and forth,
//! supporting a variety of scenarios such as converting a `String` to a `ManagedBuffer` or `TokenIdentifier`.
//!
//! - **Address Handling**:
//! The `Address` struct along with its associated methods simplify the operations and transformations
//! required when dealing with address representations on the blockchain.
//!
//! - **Data Parsing and Error Handling**:
//! Utility functions like `parse_query_return_string_data` and `parse_query_return_bytes_data` are provided to
//! parse and decode data from blockchain queries. Comprehensive error types like `DataError`, `AddressError`, and
//! `UtilsError` centralize error handling, making error propagation and management straightforward.
//!
//! # Usage
//!
//! Most of the time, developers won't have to include `novax-data` directly as a dependency. Its primary purpose is
//! to serve as a foundational utility crate used by other "novax" crates such as "novax", "novax-executor", "novax-token", etc.
//! However, if direct usage is required:
//!
//! ```rust
//! use novax_data::{Address, NativeConvertible, ManagedConvertible, parse_query_return_string_data, DataError};
//!
//! // ... your code here ...
//! ```
//!
//! For detailed examples and usage of each type and utility function, refer to their respective module and function documentation.
//!
//! # Modules
//! - `types`: Defines core types like `Address`, and the conversion traits `NativeConvertible` and `ManagedConvertible`.
//! - `constants`: (Further details can be provided as needed)
//! - `error`: Centralizes error definitions including `DataError`, `AddressError`, and `UtilsError` for robust error handling.
//! - `utils`: Provides utility functions for data parsing and other common operations.
//!
//! For a deep dive into each module and to understand the various types, traits, and functions provided,
//! navigate through the module documentation below.
//!
#![warn(missing_docs)]
mod types;
mod constants;
mod error;
mod utils;
pub use error::*;
pub use crate::types::native::NativeConvertible;
pub use crate::types::managed::ManagedConvertible;
pub use crate::types::address::Address;
pub use crate::types::payment::Payment;
pub use crate::utils::parse_query_return_data::parse_query_return_string_data;
pub use crate::utils::parse_query_return_data::parse_query_return_bytes_data;