rustpython_compiler_core/
mode.rs

1pub use rustpython_parser_core::mode::ModeParseError;
2
3#[derive(Clone, Copy)]
4pub enum Mode {
5    Exec,
6    Eval,
7    Single,
8    BlockExpr,
9}
10
11impl std::str::FromStr for Mode {
12    type Err = ModeParseError;
13
14    // To support `builtins.compile()` `mode` argument
15    fn from_str(s: &str) -> Result<Self, Self::Err> {
16        match s {
17            "exec" => Ok(Mode::Exec),
18            "eval" => Ok(Mode::Eval),
19            "single" => Ok(Mode::Single),
20            _ => Err(ModeParseError),
21        }
22    }
23}
24
25impl From<Mode> for rustpython_parser_core::Mode {
26    fn from(mode: Mode) -> Self {
27        match mode {
28            Mode::Exec => Self::Module,
29            Mode::Eval => Self::Expression,
30            Mode::Single | Mode::BlockExpr => Self::Interactive,
31        }
32    }
33}