1#![doc = include_str!("../examples/css/parser.rs")]
44#![cfg_attr(docsrs, feature(doc_cfg))]
50#![cfg_attr(docsrs, feature(extended_key_value_attributes))]
51#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
52#![warn(missing_docs)]
53#![warn(clippy::std_instead_of_core)]
54#![warn(clippy::std_instead_of_alloc)]
55#![warn(clippy::print_stderr)]
56#![warn(clippy::print_stdout)]
57
58#[cfg(feature = "alloc")]
59#[cfg_attr(test, macro_use)]
60#[allow(unused_extern_crates)]
61extern crate alloc;
62
63#[doc = include_str!("../README.md")]
64#[cfg(doctest)]
65pub struct ReadmeDoctests;
66
67pub(crate) mod util {
68 #[allow(dead_code)]
69 pub(crate) fn from_fn<F: Fn(&mut core::fmt::Formatter<'_>) -> core::fmt::Result>(
70 f: F,
71 ) -> FromFn<F> {
72 FromFn(f)
73 }
74
75 pub(crate) struct FromFn<F>(F)
76 where
77 F: Fn(&mut core::fmt::Formatter<'_>) -> core::fmt::Result;
78
79 impl<F> core::fmt::Debug for FromFn<F>
80 where
81 F: Fn(&mut core::fmt::Formatter<'_>) -> core::fmt::Result,
82 {
83 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
84 (self.0)(f)
85 }
86 }
87
88 impl<F> core::fmt::Display for FromFn<F>
89 where
90 F: Fn(&mut core::fmt::Formatter<'_>) -> core::fmt::Result,
91 {
92 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
93 (self.0)(f)
94 }
95 }
96}
97
98#[macro_use]
99mod macros;
100
101#[macro_use]
102pub mod error;
103
104mod parser;
105
106pub mod stream;
107
108pub mod ascii;
109pub mod binary;
110pub mod combinator;
111pub mod token;
112
113#[cfg(feature = "unstable-doc")]
114pub mod _topic;
115#[cfg(feature = "unstable-doc")]
116pub mod _tutorial;
117
118pub mod prelude {
140 pub use crate::error::ModalError as _;
141 pub use crate::error::ParserError as _;
142 pub use crate::stream::AsChar as _;
143 pub use crate::stream::ContainsToken as _;
144 pub use crate::stream::Stream as _;
145 pub use crate::stream::StreamIsPartial as _;
146 pub use crate::ModalParser;
147 pub use crate::ModalResult;
148 pub use crate::Parser;
149 #[cfg(feature = "unstable-recover")]
150 #[cfg(feature = "std")]
151 pub use crate::RecoverableParser as _;
152
153 #[cfg(test)]
154 pub(crate) use crate::TestResult;
155}
156
157pub use error::ModalResult;
158pub use error::Result;
159pub use parser::*;
160pub use stream::BStr;
161pub use stream::Bytes;
162pub use stream::LocatingSlice;
163pub use stream::Partial;
164pub use stream::Stateful;
165pub use stream::Str;
166
167#[cfg(test)]
168pub(crate) use error::TestResult;