libyaml/
parser_builder.rs1use std::io;
2
3use crate::{Encoding, Parser, ParserError};
4use crate::sys;
5
6pub struct ParserBuilder<'a> {
8 parser: Box<Parser<'a>>,
9}
10
11impl<'a> ParserBuilder<'a> {
12 pub fn new<R: io::Read + 'a>(reader: R) -> Result<Self, ParserError> {
14 Parser::new(reader).map(|parser| Self { parser })
15 }
16
17 pub fn finish(self) -> Box<Parser<'a>> {
19 self.parser
20 }
21
22 pub fn encoding(mut self, encoding: Encoding) -> Self {
24 unsafe {
25 sys::yaml_parser_set_encoding(
26 self.parser.as_raw_ptr(),
27 encoding.into_raw(),
28 );
29 }
30
31 self
32 }
33}