const_format_proc_macros/
format_str.rs

1use crate::{formatting::FormattingFlags, parse_utils::StrRawness};
2
3mod errors;
4
5mod parsing;
6
7#[cfg(test)]
8mod tests;
9
10pub(crate) use self::errors::{ParseError, ParseErrorKind};
11
12#[derive(Debug, PartialEq)]
13pub(crate) struct FormatStr {
14    pub(crate) list: Vec<FmtStrComponent>,
15}
16
17#[derive(Debug, PartialEq)]
18pub(crate) enum FmtStrComponent {
19    Str(String, StrRawness),
20    Arg(FmtArg),
21}
22
23/// An argument in the format string eg: `"{foo:?}"`
24#[derive(Debug, PartialEq)]
25pub(crate) struct FmtArg {
26    pub(crate) which_arg: WhichArg,
27    pub(crate) formatting: FormattingFlags,
28    pub(crate) rawness: StrRawness,
29}
30
31#[derive(Debug, PartialEq)]
32pub(crate) enum WhichArg {
33    Ident(String),
34    Positional(Option<usize>),
35}