File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change @@ -215,3 +215,48 @@ Macros
215
215
fn example_function() {
216
216
// Compliant implementation
217
217
}
218
+
219
+ .. guideline :: Attribute macros shall not be used
220
+ :id: gui_13XWp3mb0g2P
221
+ :category: required
222
+ :status: draft
223
+ :release: todo
224
+ :fls: fls_4vjbkm4ceymk
225
+ :decidability: decidable
226
+ :scope: system
227
+ :tags: reduce-human-error
228
+
229
+ Attribute macros shall neither be declared nor invoked.
230
+ Prefer less powerful macros that only extend source code.
231
+
232
+ .. rationale ::
233
+ :id: rat_X8uCF5yx7Mpo
234
+ :status: draft
235
+
236
+ Attribute macros are able to rewrite items entirely or in other unexpected ways which can cause confusion and introduce errors.
237
+
238
+ .. non_compliant_example ::
239
+ :id: non_compl_ex_eW374waRPbeL
240
+ :status: draft
241
+
242
+ Explanation of code example.
243
+
244
+ .. code-block :: rust
245
+
246
+ #[tokio::main] // non-compliant
247
+ async fn main() {
248
+
249
+ }
250
+
251
+ .. compliant_example ::
252
+ :id: compl_ex_Mg8ePOgbGJeW
253
+ :status: draft
254
+
255
+ Explanation of code example.
256
+
257
+ .. code-block :: rust
258
+
259
+ fn example_function() {
260
+ // Compliant implementation
261
+ }
262
+
You can’t perform that action at this time.
0 commit comments