@@ -124,8 +124,27 @@ decl_derive!([TyDecodable] => serialize::type_decodable_derive);
124
124
decl_derive ! ( [ TyEncodable ] => serialize:: type_encodable_derive) ;
125
125
decl_derive ! ( [ MetadataDecodable ] => serialize:: meta_decodable_derive) ;
126
126
decl_derive ! ( [ MetadataEncodable ] => serialize:: meta_encodable_derive) ;
127
- decl_derive ! ( [ TypeFoldable , attributes( type_foldable) ] => type_foldable:: type_foldable_derive) ;
128
- decl_derive ! ( [ TypeVisitable , attributes( type_visitable) ] => type_visitable:: type_visitable_derive) ;
127
+ decl_derive ! (
128
+ [ TypeFoldable , attributes( type_foldable) ] =>
129
+ /// Derives `TypeFoldable` for the annotated `struct` or `enum` (`union` is not supported).
130
+ ///
131
+ /// The fold will produce a value of the same struct or enum variant as the input, with
132
+ /// each field respectively folded using the `TypeFoldable` implementation for its type.
133
+ /// However, if a field of a struct or an enum variant is annotated with
134
+ /// `#[type_foldable(identity)]` then that field will retain its incumbent value (and its
135
+ /// type is not required to implement `TypeFoldable`).
136
+ type_foldable:: type_foldable_derive
137
+ ) ;
138
+ decl_derive ! (
139
+ [ TypeVisitable , attributes( type_visitable) ] =>
140
+ /// Derives `TypeVisitable` for the annotated `struct` or `enum` (`union` is not supported).
141
+ ///
142
+ /// Each field of the struct or enum variant will be visited in definition order, using the
143
+ /// `TypeVisitable` implementation for its type. However, if a field of a struct or an enum
144
+ /// variant is annotated with `#[type_visitable(ignore)]` then that field will not be
145
+ /// visited (and its type is not required to implement `TypeVisitable`).
146
+ type_visitable:: type_visitable_derive
147
+ ) ;
129
148
decl_derive ! ( [ Lift , attributes( lift) ] => lift:: lift_derive) ;
130
149
decl_derive ! (
131
150
[ Diagnostic , attributes(
0 commit comments