dangerous/reader/
string.rs1use crate::error::{CoreOperation, ExpectedLength};
2use crate::input::PrivateExt;
3
4use super::StringReader;
5
6impl<'i, E> StringReader<'i, E> {
7 #[inline]
13 pub fn read_char(&mut self) -> Result<char, E>
14 where
15 E: From<ExpectedLength<'i>>,
16 {
17 self.try_advance(|input| input.split_token(CoreOperation::ReadChar))
18 }
19
20 #[inline]
24 pub fn read_char_opt(&mut self) -> Option<char> {
25 self.advance_opt(PrivateExt::split_token_opt)
26 }
27
28 #[inline]
34 pub fn peek_char(&self) -> Result<char, E>
35 where
36 E: From<ExpectedLength<'i>>,
37 {
38 self.input
39 .clone()
40 .split_token(CoreOperation::PeekChar)
41 .map(|(token, _)| token)
42 }
43
44 #[inline]
49 #[must_use = "peek result must be used"]
50 pub fn peek_char_opt(&self) -> Option<char> {
51 self.input.clone().split_token_opt().map(|(token, _)| token)
52 }
53}