libyaml/lib.rs
1//! High-level bindings for the [LibYAML] library.
2//!
3//! [LibYAML]: https://github.com/yaml/libyaml
4//!
5//! # Reading YAML
6//!
7//! To read a YAML stream, use [`Parser`]. This example counts the number of
8//! alias events in a stream.
9//!
10//! ```
11//! # use std::io;
12//! # use libyaml::*;
13//! #
14//! # fn doctest<R: io::Read>(reader: R) -> Result<(), ParserError> {
15//! let alias_count = Parser::new(reader)?.into_iter().filter(|e| {
16//! if let Ok(Event::Alias { .. }) = e { true } else { false }
17//! }).count();
18//! # Ok(())
19//! # }
20//! ```
21//!
22//! [`Parser`]: struct.Parser.html
23//!
24//! # Writing YAML
25//!
26//! To write a YAML stream, use [`Emitter`]. This example writes a stream with
27//! a single document consisting of a single scalar.
28//!
29//! ```
30//! # use std::io;
31//! # use libyaml::*;
32//! #
33//! # fn doctest<W: io::Write>(writer: W) -> Result<(), EmitterError> {
34//! let mut emitter = Emitter::new(writer)?;
35//!
36//! emitter.emit(Event::StreamStart { encoding: None })?;
37//! emitter.emit(Event::DocumentStart { implicit: true })?;
38//! emitter.emit(Event::Scalar {
39//! anchor: None,
40//! tag: Some(tag::INT.to_string()),
41//! value: "42".to_string(),
42//! plain_implicit: false,
43//! quoted_implicit: false,
44//! style: None,
45//! })?;
46//! emitter.emit(Event::DocumentEnd { implicit: true })?;
47//! emitter.emit(Event::StreamEnd)?;
48//! # Ok(())
49//! # }
50//! ```
51//!
52//! [`Emitter`]: struct.Emitter.html
53
54#![allow(clippy::unsafe_removed_from_name)]
55
56pub mod tag;
57
58pub use self::emitter::Emitter;
59pub use self::emitter_builder::EmitterBuilder;
60pub use self::emitter_error::EmitterError;
61pub use self::encoding::Encoding;
62pub use self::event::Event;
63pub use self::event_error::EventError;
64pub use self::line_break::LineBreak;
65pub use self::mapping_style::MappingStyle;
66pub use self::parser::Parser;
67pub use self::parser_builder::ParserBuilder;
68pub use self::parser_error::ParserError;
69pub use self::parser_iter::ParserIter;
70pub use self::scalar_style::ScalarStyle;
71pub use self::sequence_style::SequenceStyle;
72pub use self::tag_directive::TagDirective;
73pub use self::version_directive::VersionDirective;
74
75mod emitter;
76mod emitter_builder;
77mod emitter_error;
78mod encoding;
79mod event;
80mod event_error;
81mod line_break;
82mod mapping_style;
83mod parser;
84mod parser_builder;
85mod parser_error;
86mod parser_iter;
87mod scalar_style;
88mod sequence_style;
89mod tag_directive;
90mod version_directive;
91
92use unsafe_libyaml as sys;