Stdto
stdto
provides a set of functional traits for conversion between various data representations.
| Examples | Docs | Latest Note |
toml
stdto = "0.7.0"
Goal
As a blockchain developer who specializes in Rust, I often find it challenging to work with bytes, hashes, and JSON. The Rust ecosystem is decentralized and many popular crates are old and complex. This makes it difficult to find simple, well-abstracted solutions that are easy to understand. I created the Stdto crate to address this need. The goal of Stdto is to provide a standard library-like interface that makes it easy for users to work with and understand primitive data structures.
Features
toml
default = ["derive", "serde", "bytes", "hash", "json", "hex"]
sh
cargo add stdto --features "derive bytes" # [derive, serde, bytes]
cargo add stdto --features "derive hash" # [derive, serde, bytes, hash]
cargo add stdto --features "derive json" # [derive, serde, json]
cargo add stdto --features "derive hex" # [derive, serde, bytes, hex]
Examples
rust
use stdto::prelude::*;
```rust // #[stdto::bytes(endian = "little")]
struct Test {
a: u32,
b: String,
c: [u8; 32],
d: Vec
bytes = test.tobytes(); Test::frombytes(bytes); ```
```rust
struct Test { ... }
hash = test.to_hash::
```rust
struct Test {
a: u32,
b: String,
c: [u8; 32],
d: Vec
json = test.tojson(); Test::fromjson(json); ```
```rust // AsRef<[u8]> to hex
hex = hash.tohex();
Vec::
mut arr = [0u8; 32]; arr.copyfromhex(hex); ```
```rust // AsRef<[u8]> <-> String, &str
arr = [72, 105, 77, 111, 109]; s1 = arr.intostring(); bytes = s1.tobytes(); s2 = bytes.as_str();
assert_eq!(s1, s2); ```