Awesome
clojure-reader
A crate to read Clojure.
EDN (Extensible Data Notation)
MSRV (minimal supported rust version)
Stable minus 2 versions. Once stable (1.0.0), the plan is to indefinitely maintain the MSRV.
Default Features
The following features are enabled by default. To disable use this crate without default features.
std
When using no_std, this crate relies on alloc
. You must supply your own #[global_allocator]
.
floats
Pulls in the dependency ordered-float
for Edn::Double. Without this feature, parsing floating-point numbers will result in an Err.
Optional Features
The following features are not enabled by default. To enable them all, use with
clojure-reader = { features = ["full"] }
derive
Enables implementation for serde's Serialize and Deserialize traits for convenient to/from rust structures.
See serde example
for tips/tricks (eg you'll probably want kebab-case
).
Note that EDN is more generic than rust, so this feature will silently pass over things that rust and serde cannot handle. For example
{:foo 42, 42 "bar"}
will pass over the k/v pair (42 "bar")
and transform :foo
to foo
.
If you need complete control, it is recommended to use the base read
and read_string
.
See get-nth example
for clojure-like navigation.
arbitrary-nums
Enables parsing of arbitrary length/precision Ints and Decimals. Relies on bigdecimal
and num-bigint
crates.
no_std
See the pico example for a minimalistic example of using this crate with the raspberry pi pico (rp2040)