edn-rs 0.2.2

Crate to parse and emit EDN
Documentation

edn-rs

[Experimental] Crate to parse and emit EDN

Usage

Cargo.toml

[dependencies]
edn-rs = "0.2.1"

Parse and EDN into a EdnNode:

extern crate edn_rs;

use edn_rs::parse_edn;

fn main() {
    ...
    let edn = String::from("[1 2 [:3 \"4\"]]");
    let value = parse_edn(edn);
    ...
}

Current Features

  • Define struct to map EDN info EdnNode
  • Define EDN types, EdnType
  • Parse simples EDN data:
    • nil ""
    • String "\"string\""
    • Numbers "324352", "3442.234", "3/4"
    • Keywords
    • Vector "[1 :2 \"d\"]"
    • List "(1 :2 \"d\")"
    • Set "#{1 2 3}"
    • Map "{:a 1 :b 2 }"
    • Unbalanced Map returns EdnType::Err, "{:a 1 :b}"
  • Simple data structures in one another:
    • Vec in Vec "[1 2 [:3 \"4\"]]"
    • Set in Vec "[1 2 #{:3 \"4\"}]"
    • List in List
    • Set in List
    • Set in Set (Needs to sort set withoug the inner values)
    • List in Set (Needs to sort set withoug the inner values)
    • Maps in general
  • Multiple simple data structures in one another (Map and Set in a vector)
  • Multi deepen data structures (Map in a Set in a List in a Vec in a Vec)
  • Json to Edn
    • macro to process Structs and Enums to EDN
  • Edn to Json