protobuf/reflect/file/
syntax.rs

1use crate::descriptor::FileDescriptorProto;
2
3/// `.proto` file syntax.
4#[derive(Debug, Copy, Clone, PartialEq, Eq)]
5pub enum Syntax {
6    /// `syntax = "proto2"`.
7    Proto2,
8    /// `syntax = "proto3"`.
9    Proto3,
10}
11
12impl Syntax {
13    pub(crate) fn parse(syntax: &str) -> Option<Syntax> {
14        match syntax {
15            "" | "proto2" => Some(Syntax::Proto2),
16            "proto3" => Some(Syntax::Proto3),
17            _ => None,
18        }
19    }
20
21    pub(crate) fn of_file(file: &FileDescriptorProto) -> Syntax {
22        Syntax::parse(file.syntax()).unwrap_or(Syntax::Proto2)
23    }
24}