diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/plist/src/lib.rs | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/plist/src/lib.rs')
-rw-r--r-- | third_party/rust/plist/src/lib.rs | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/third_party/rust/plist/src/lib.rs b/third_party/rust/plist/src/lib.rs new file mode 100644 index 0000000000..0ac048e30d --- /dev/null +++ b/third_party/rust/plist/src/lib.rs @@ -0,0 +1,133 @@ +//! # Plist +//! +//! A rusty plist parser. +//! +//! ## Usage +//! +//! Put this in your `Cargo.toml`: +//! +//! ```toml +//! [dependencies] +//! plist = "1" +//! ``` +//! +//! And put this in your crate root: +//! +//! ```rust +//! extern crate plist; +//! ``` +//! +//! ## Examples +//! +//! ### Using `serde` +//! +//! ```rust +//! extern crate plist; +//! # #[cfg(feature = "serde")] +//! #[macro_use] +//! extern crate serde_derive; +//! +//! # #[cfg(feature = "serde")] +//! # fn main() { +//! #[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"); +//! # } +//! # +//! # #[cfg(not(feature = "serde"))] +//! # fn main() {} +//! ``` +//! +//! ### Using `Value` +//! +//! ```rust +//! 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. + +pub mod dictionary; + +#[cfg(feature = "enable_unstable_features_that_may_break_with_minor_version_bumps")] +pub mod stream; +#[cfg(not(feature = "enable_unstable_features_that_may_break_with_minor_version_bumps"))] +mod stream; + +mod date; +mod error; +mod integer; +mod uid; +mod value; + +pub use date::Date; +pub use dictionary::Dictionary; +pub use error::Error; +pub use integer::Integer; +pub use stream::XmlWriteOptions; +pub use uid::Uid; +pub use value::Value; + +// Optional serde module +#[cfg(feature = "serde")] +#[macro_use] +extern crate serde; +#[cfg(feature = "serde")] +mod de; +#[cfg(feature = "serde")] +mod ser; +#[cfg(all( + feature = "serde", + any( + test, + feature = "enable_unstable_features_that_may_break_with_minor_version_bumps" + ) +))] +pub use self::{de::Deserializer, ser::Serializer}; +#[cfg(feature = "serde")] +pub use self::{ + de::{from_bytes, from_file, from_reader, from_reader_xml}, + ser::{ + to_file_binary, to_file_xml, to_writer_binary, to_writer_xml, to_writer_xml_with_options, + }, +}; + +#[cfg(all(test, feature = "serde"))] +#[macro_use] +extern crate serde_derive; + +#[cfg(all(test, feature = "serde"))] +mod serde_tests; + +fn u64_to_usize(len_u64: u64) -> Option<usize> { + let len = len_u64 as usize; + if len as u64 != len_u64 { + return None; // Too long + } + Some(len) +} |