Crate kdl[][src]

Expand description

KDL is a document language with xml-like semantics that looks like you’re invoking a bunch of CLI commands! It’s meant to be used both as a serialization format and a configuration language, much like JSON, YAML, or XML.

There’s a living specification, as well as various implementations. You can also check out the language FAQ to answer all your burning questions!

This crate is the official/reference implementation of the KDL document language.


The code in this crate is covered by the Parity License, a strong copyleft license. That means that you can only use this project if you’re working on an open source-licensed product (MIT/Apache projects are ok!)

Example KDL File

author "Alex Monad" email="" active=true

contents {
  section "First section" {
    paragraph "This is the first paragraph"
    paragraph "This is the second paragraph"

// unicode! comments!
π 3.14159

Basic Library Example

use kdl::{KdlNode, KdlValue};
use std::collections::HashMap;

    kdl::parse_document("node 1 key=true").unwrap(),
        KdlNode {
            name: String::from("node"),
            values: vec![KdlValue::Int(1)],
            properties: {
                let mut temp = HashMap::new();
                temp.insert(String::from("key"), KdlValue::Boolean(true));
            children: vec![],


An error that occurs when parsing a KDL document.

A node representing the smallest unit of a KDL document.

Coversion errors for converting KdlNode to another type via TryFrom or TryInto.


A type reprenting additional information specific to the type of error being returned.

A value present in either a node’s values or in a node’s properties.


Parse a KDL document from a string into a list of KdlNodes.