1 //! Generated code support for enum descriptors.
2 
3 use std::any::TypeId;
4 
5 use crate::descriptor::FileDescriptorProto;
6 use crate::EnumFull;
7 use crate::EnumOrUnknown;
8 
9 #[doc(hidden)]
10 pub struct GeneratedEnumDescriptorData {
11     pub(crate) name_in_file: &'static str,
12     type_id: TypeId,
13     enum_or_unknown_type_id: TypeId,
14 }
15 
16 impl GeneratedEnumDescriptorData {
17     #[doc(hidden)]
new<E>(name_in_file: &'static str) -> GeneratedEnumDescriptorData where E: EnumFull,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)]
31 pub(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 
38 impl GeneratedEnumDescriptor {
new( data: GeneratedEnumDescriptorData, file_descriptor_proto: &'static FileDescriptorProto, ) -> GeneratedEnumDescriptor39     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 }
57