52 releases (21 stable)

1.8.0 Sep 15, 2025
1.7.4 Jul 7, 2025
1.7.2 Jun 11, 2025
1.7.1 Mar 24, 2025
0.0.10 Nov 6, 2015

#27 in Encoding

Download history 304367/week @ 2025-12-18 224338/week @ 2025-12-25 306057/week @ 2026-01-01 388628/week @ 2026-01-08 404272/week @ 2026-01-15 440646/week @ 2026-01-22 449853/week @ 2026-01-29 519882/week @ 2026-02-05 509913/week @ 2026-02-12 602636/week @ 2026-02-19 679720/week @ 2026-02-26 834624/week @ 2026-03-05 890101/week @ 2026-03-12 758289/week @ 2026-03-19 772426/week @ 2026-03-26 656558/week @ 2026-04-02

3,227,533 downloads per month
Used in 1,277 crates (201 directly)

MIT license

255KB
6K SLoC

Plist

A rusty plist parser.

Many features from previous versions are now hidden behind the enable_unstable_features_that_may_break_with_minor_version_bumps feature. These will break in minor version releases after the 1.0 release. If you really really must use them you should specify a tilde requirement e.g. plist = "~1.0.3" in you Cargo.toml so that the plist crate is not automatically updated to version 1.1.

Documentation


lib.rs:

Plist

A rusty plist parser.

Usage

Put this in your Cargo.toml:

[dependencies]
plist = "1"

And put this in your crate root:

extern crate plist;

Examples

Using serde

extern crate plist;
#[macro_use]
extern crate serde_derive;

#[derive(Deserialize)]
#[serde(rename_all = "PascalCase")]
struct Book {
    title: String,
    author: String,
    excerpt: String,
    copies_sold: u64,
}

let book: Book = plist::from_file("tests/data/book.plist")
    .expect("failed to read book.plist");

assert_eq!(book.title, "Great Expectations");
#

Using Value

use plist::Value;

let book = Value::from_file("tests/data/book.plist")
    .expect("failed to read book.plist");

let title = book
    .as_dictionary()
    .and_then(|dict| dict.get("Title"))
    .and_then(|title| title.as_string());

assert_eq!(title, Some("Great Expectations"));

Unstable Features

Many features from previous versions are now hidden behind the enable_unstable_features_that_may_break_with_minor_version_bumps feature. These will break in minor version releases after the 1.0 release. If you really really must use them you should specify a tilde requirement e.g. plist = "~1.0.3" in you Cargo.toml so that the plist crate is not automatically updated to version 1.1.

Dependencies

~4MB
~68K SLoC