Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kurtlawrence/kserd
Kurt's Self-Explanatory Rust Data
https://github.com/kurtlawrence/kserd
Last synced: about 1 month ago
JSON representation
Kurt's Self-Explanatory Rust Data
- Host: GitHub
- URL: https://github.com/kurtlawrence/kserd
- Owner: kurtlawrence
- License: mit
- Created: 2019-08-23T14:26:40.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-04-01T05:44:20.000Z (almost 3 years ago)
- Last Synced: 2024-10-31T03:49:36.480Z (2 months ago)
- Language: Rust
- Size: 213 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://github.com/kurtlawrence/kserd/workflows/Rust/badge.svg)](https://github.com/kurtlawrence/kserd/actions)
[![Latest Version](https://img.shields.io/crates/v/kserd.svg)](https://crates.io/crates/kserd)
[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/kserd)
[![codecov](https://codecov.io/gh/kurtlawrence/kserd/branch/master/graph/badge.svg)](https://codecov.io/gh/kurtlawrence/kserd)**K**urt's **S**elf **E**xplanatory **R**ust **D**ata.
See the [rs docs.](https://docs.rs/kserd/)
Look at progress and contribute on [github.](https://github.com/kurtlawrence/kserd)## Introduction
`kserd` provides a data structure to represent programmatic data (mainly for Rust). Data is held in
enum variants covering the basic primitives along with nested structures such as tuples,
containers, sequences, and maps. `kserd` tries to differentiate itself by providing the data
structure as the in-memory intermediary between serialized format and a programming language's
structure. The serialized format is inspired by TOML to make `kserd` as human-readable as possible.## Getting Started
With default features enabled, using `kserd` is a simple as importing the root which will contain
all the important items.```rust
use kserd::*;# #[cfg(feature = "encode")] {
// Kserd and Value are the building blocks of the data.
let mut kserd = Kserd::with_id("greeting", Value::new_str("Hello")).unwrap();// Kserd/Value are meant to be useable in their memory form
// not just simple data holding structure!
assert_eq!(kserd.str(), Some("Hello"));// you can mutate in place as well
kserd.str_mut().map(|s| { s.push_str(", world!"); });
assert_eq!(kserd.str(), Some("Hello, world!"));// encode data structures that implement serde::Serialize
let kserd = Kserd::enc(&vec![0, 1, 2, 4]).unwrap();// can format the kserd into a human-readable string
println!("{}", kserd.as_str()); // should print [0, 1, 2, 4]
# }
```It is recommended to consult the [api documentation](crate) as there is extensive examples and
explanations.## Features
The kserd library is feature gated, but all features are enabled by default.
| Feature | Description | Further reading |
| -------- | ----------- | --------------- |
| _encode_ | Convert data structures to and from `Kserd`. Makes use of `serde` `Serialize` and `Deserialize` traits. | [`kserd::encode`](crate::encode) |
| _format_ | Format a `Kserd` to a human-readable string. | [`kserd::format`](crate::fmt) |
| _parse_ | Parse a string into a `Kserd`. | [`kserd::parse`](crate::parse) |