#parser #serde

plist

A rusty plist parser. Supports Serde serialization.

48 releases (17 stable)

new 1.7.1 Mar 24, 2025
1.7.0 Jun 30, 2024
1.6.1 Mar 23, 2024
1.6.0 Nov 4, 2023
0.0.10 Nov 6, 2015

#38 in Encoding

Download history 133901/week @ 2024-12-05 131233/week @ 2024-12-12 88080/week @ 2024-12-19 85703/week @ 2024-12-26 109786/week @ 2025-01-02 123769/week @ 2025-01-09 124509/week @ 2025-01-16 129928/week @ 2025-01-23 142218/week @ 2025-01-30 154010/week @ 2025-02-06 129338/week @ 2025-02-13 147136/week @ 2025-02-20 141115/week @ 2025-02-27 139156/week @ 2025-03-06 153775/week @ 2025-03-13 138621/week @ 2025-03-20

598,080 downloads per month
Used in 697 crates (111 directly)

MIT license

250KB
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

~3.5MB
~62K SLoC