1 //! # Reflection implementation for protobuf data
2 //!
3 //! ## Generated vs dynamic
4 //!
5 //! rust-protobuf supports reflection for both:
6 //! * generated messages (generated rust code)
7 //! * dynamic messages (created from arbitrary `FileDescriptorProto` without code generation)
8 //!
9 //! The API to work with these types of messages is the same.
10 //!
11 //! ## API
12 //!
13 //! The API roughly follows Google protobuf C++ and Java API.
14 //! Some minor adjustements are made to make code more idiomatic to rust.
15 
16 mod acc;
17 mod dynamic;
18 mod enums;
19 pub(crate) mod error;
20 mod field;
21 mod file;
22 mod find_message_or_enum;
23 mod map;
24 pub(crate) mod message;
25 mod oneof;
26 mod optional;
27 mod protobuf_type_box;
28 mod repeated;
29 mod runtime_type_box;
30 mod service;
31 mod type_dynamic;
32 pub(crate) mod value;
33 
34 // Runtime type types are public, but not visible in public API.
35 pub(crate) mod runtime_types;
36 
37 pub(crate) mod types;
38 
39 pub(crate) mod reflect_eq;
40 
41 pub mod rt;
42 
43 pub(crate) mod name;
44 
45 #[doc(hidden)]
46 pub use self::enums::generated::GeneratedEnumDescriptorData;
47 pub use self::enums::EnumDescriptor;
48 pub use self::enums::EnumValueDescriptor;
49 pub use self::field::runtime_field_type::RuntimeFieldType;
50 pub use self::field::FieldDescriptor;
51 pub use self::field::ReflectFieldRef;
52 #[doc(hidden)]
53 pub use self::file::generated::GeneratedFileDescriptor;
54 pub use self::file::syntax::Syntax;
55 pub use self::file::FileDescriptor;
56 pub use self::map::ReflectMapMut;
57 pub use self::map::ReflectMapRef;
58 #[doc(hidden)]
59 pub use self::message::generated::GeneratedMessageDescriptorData;
60 pub use self::message::message_ref::MessageRef;
61 pub use self::message::MessageDescriptor;
62 #[doc(hidden)]
63 pub use self::oneof::generated::GeneratedOneofDescriptorData;
64 pub use self::oneof::OneofDescriptor;
65 pub use self::optional::ReflectOptionalRef;
66 pub use self::reflect_eq::ReflectEq;
67 pub use self::reflect_eq::ReflectEqMode;
68 pub use self::repeated::ReflectRepeatedMut;
69 pub use self::repeated::ReflectRepeatedRef;
70 pub use self::runtime_type_box::RuntimeType;
71 pub use self::service::MethodDescriptor;
72 pub use self::service::ServiceDescriptor;
73 pub use self::value::value_box::ReflectValueBox;
74 pub use self::value::value_ref::ReflectValueRef;
75 pub use self::value::ProtobufValue;
76