/rust/registry/src/index.crates.io-1949cf8c6b5b557f/protobuf-3.2.0/src/message_full.rs
Line | Count | Source |
1 | | use std::fmt; |
2 | | |
3 | | use crate::message_dyn::MessageDyn; |
4 | | use crate::reflect::reflect_eq::ReflectEqMode; |
5 | | use crate::reflect::MessageDescriptor; |
6 | | use crate::reflect::ProtobufValue; |
7 | | use crate::Message; |
8 | | |
9 | | /// Trait implemented for all the generated messages, except when lite runtime is enabled. |
10 | | /// |
11 | | /// When lite runtime is enabled, only `MessageLite` is implemented. |
12 | | /// |
13 | | /// * Generated messages are generated from `.proto` files |
14 | | /// * Dynamic messages can be created without code generation using only parsed proto files |
15 | | /// (see [FileDescriptor::new_dynamic](crate::reflect::FileDescriptor::new_dynamic)). |
16 | | /// |
17 | | /// Also, generated messages implement `Default + PartialEq` |
18 | | /// |
19 | | /// This trait is sized, there's accompanying [`MessageDyn`](crate::MessageDyn) trait |
20 | | /// which is implemented for all messages which can be used in functions |
21 | | /// without making message a function type parameter. |
22 | | /// |
23 | | /// ## `Display` |
24 | | /// |
25 | | /// [`Display`](fmt::Display) implementation for messages does protobuf text format. |
26 | | /// See [`text_format`](crate::text_format) for more details. |
27 | | pub trait MessageFull: Message + ProtobufValue + fmt::Debug + fmt::Display { |
28 | | /// Get message descriptor for message type. |
29 | | /// |
30 | | /// ``` |
31 | | /// # use protobuf::MessageFull; |
32 | | /// # fn foo<MyMessage: MessageFull>() { |
33 | | /// let descriptor = MyMessage::descriptor(); |
34 | | /// assert_eq!("MyMessage", descriptor.name()); |
35 | | /// # } |
36 | | /// ``` |
37 | | fn descriptor() -> MessageDescriptor; |
38 | | |
39 | | /// Reflective equality. |
40 | | /// |
41 | | /// # See also |
42 | | /// |
43 | | /// [`dyn Message::reflect_eq_dyn()`], `dyn` version of this function. |
44 | 0 | fn reflect_eq(&self, other: &Self, mode: &ReflectEqMode) -> bool { |
45 | 0 | <dyn MessageDyn>::reflect_eq_dyn(self, other, mode) |
46 | 0 | } |
47 | | } |