lexpr 0.1.2

A representation for Lisp data

lexpr: S-expressions for Rust Build Status Latest Version Rustc Version 1.32+

[dependencies]
lexpr = "0.1.2"

You may be looking for:

S-expressions are the human-readable, textual representation of code and data in the Lisp family of languages. lexpr aims to provide the tools to:

  • Embed S-expression data into Rust programs using the sexp macro:

    use lexpr::sexp;
    
    let address = sexp!(((name . "Jane Doe") (street . "4026 Poe Lane")));
    
  • Construct and destructure S-expression data using a full-featured API:

    use lexpr::Value;
    
    let names = Value::list(vec!["Alice", "Bob", "Mallory"]);
    println!("The bad guy is {}", names[2].as_str().unwrap());
    
  • Parse and serialize S-expression data from and to its textual representation. This is, as of version 0.1.2, not yet implemented, but should be coming soon. You may have a look at the wip/parse branch, if you are curious, but note that it is subject to frequent rebasing.

To get a better idea of the direction lexpr is headed, you may want to take at the TODO or the "why" document.

Licensing

The code and documentation in the lexpr git repository is free software, dual-licensed under the MIT or Apache-2.0 license, at your choosing.

The lexpr repository contains code and documentation adapted from the following projects:

  • serde_json, also dual-licensed under MIT/Apache-2.0 licenses.
  • sexpr, Copyright 2017 Zephyr Pellerin, dual-licensed under the same licenses.