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