protobuf/reflect/enums/
generated.rs

1//! Generated code support for enum descriptors.
2
3use std::any::TypeId;
4
5use crate::descriptor::FileDescriptorProto;
6use crate::EnumFull;
7use crate::EnumOrUnknown;
8
9#[doc(hidden)]
10pub struct GeneratedEnumDescriptorData {
11    pub(crate) name_in_file: &'static str,
12    type_id: TypeId,
13    enum_or_unknown_type_id: TypeId,
14}
15
16impl GeneratedEnumDescriptorData {
17    #[doc(hidden)]
18    pub fn new<E>(name_in_file: &'static str) -> GeneratedEnumDescriptorData
19    where
20        E: EnumFull,
21    {
22        GeneratedEnumDescriptorData {
23            name_in_file,
24            type_id: TypeId::of::<E>(),
25            enum_or_unknown_type_id: TypeId::of::<EnumOrUnknown<E>>(),
26        }
27    }
28}
29
30#[derive(Debug)]
31pub(crate) struct GeneratedEnumDescriptor {
32    /// Type id of `<E>`
33    pub(crate) type_id: TypeId,
34    /// Type id of `<ProtobufEnumOrUnknown<E>>`
35    pub(crate) _enum_or_unknown_type_id: TypeId,
36}
37
38impl GeneratedEnumDescriptor {
39    pub(crate) fn new(
40        data: GeneratedEnumDescriptorData,
41        file_descriptor_proto: &'static FileDescriptorProto,
42    ) -> GeneratedEnumDescriptor {
43        let GeneratedEnumDescriptorData {
44            name_in_file,
45            type_id,
46            enum_or_unknown_type_id,
47        } = data;
48
49        let _ = (name_in_file, file_descriptor_proto);
50
51        GeneratedEnumDescriptor {
52            type_id,
53            _enum_or_unknown_type_id: enum_or_unknown_type_id,
54        }
55    }
56}