@@ -644,7 +644,8 @@ class _:
644
644
An inline assembly expression. For example:
645
645
```rust
646
646
unsafe {
647
- builtin # asm(_);
647
+ #[inline(always)]
648
+ builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b);
648
649
}
649
650
```
650
651
"""
@@ -932,8 +933,13 @@ class _:
932
933
933
934
For example:
934
935
```rust
935
- <T as Iterator>::Item
936
- // ^^^^
936
+ fn process_cloneable<T>(iter: T)
937
+ where
938
+ T: Iterator<Item: Clone>
939
+ // ^^^^^^^^^^^
940
+ {
941
+ // ...
942
+ }
937
943
```
938
944
"""
939
945
@@ -959,8 +965,13 @@ class _:
959
965
960
966
For example:
961
967
```rust
962
- for <'a> |x: &'a u32 | x
963
- // ^^^^^^
968
+ let print_any = for<T: std::fmt::Debug> |x: T| {
969
+ // ^^^^^^^^^^^^^^^^^^^^^^^
970
+ println!("{:?}", x);
971
+ };
972
+
973
+ print_any(42);
974
+ print_any("hello");
964
975
```
965
976
"""
966
977
@@ -1135,8 +1146,13 @@ class _:
1135
1146
1136
1147
For example:
1137
1148
```rust
1138
- for <'a> fn(&'a str)
1139
- // ^^^^^
1149
+ fn foo<T>(value: T)
1150
+ where
1151
+ T: for<'a> Fn(&'a str) -> &'a str
1152
+ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1153
+ {
1154
+ // ...
1155
+ }
1140
1156
```
1141
1157
"""
1142
1158
@@ -1311,8 +1327,8 @@ class _:
1311
1327
1312
1328
For example:
1313
1329
```rust
1314
- Foo <'a>
1315
- // ^^
1330
+ let text: Text <'a>;
1331
+ // ^^
1316
1332
```
1317
1333
"""
1318
1334
@@ -1399,6 +1415,9 @@ class _:
1399
1415
1400
1416
For example:
1401
1417
```rust
1418
+ macro_rules! macro_type {
1419
+ () => { i32 };
1420
+ }
1402
1421
type T = macro_type!();
1403
1422
// ^^^^^^^^^^^^^
1404
1423
```
@@ -1445,8 +1464,13 @@ class _:
1445
1464
1446
1465
For example:
1447
1466
```rust
1448
- #[cfg(feature = "foo")]
1449
- // ^^^^^^^^^^^^^^^
1467
+ #[unsafe(lint::name = "reason_for_bypass")]
1468
+ //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1469
+ #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)]
1470
+ //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1471
+ fn foo() {
1472
+ // ...
1473
+ }
1450
1474
```
1451
1475
"""
1452
1476
@@ -1578,8 +1602,8 @@ class _:
1578
1602
"""
1579
1603
A path referring to a type. For example:
1580
1604
```rust
1581
- let x: ( i32) ;
1582
- // ^^^
1605
+ type X = std::collections::HashMap<i32, i32> ;
1606
+ type Y = X::Item;
1583
1607
```
1584
1608
"""
1585
1609
@@ -2187,14 +2211,12 @@ class FormatArgument(Locatable):
2187
2211
@annotate (MacroDef )
2188
2212
class _ :
2189
2213
"""
2190
- A macro definition using the `macro_rules!` or similar syntax .
2214
+ A Rust 2.0 style declarative macro definition .
2191
2215
2192
2216
For example:
2193
2217
```rust
2194
- macro_rules! my_macro {
2195
- () => {
2196
- println!("This is a macro!");
2197
- };
2218
+ pub macro vec_of_two($element:expr) {
2219
+ vec![$element, $element]
2198
2220
}
2199
2221
```
2200
2222
"""
@@ -2219,8 +2241,14 @@ class _:
2219
2241
2220
2242
For example:
2221
2243
```rust
2244
+ macro_rules! my_macro {
2245
+ () => {
2246
+ Ok(_)
2247
+ };
2248
+ }
2222
2249
match x {
2223
2250
my_macro!() => "matched",
2251
+ // ^^^^^^^^^^^
2224
2252
_ => "not matched",
2225
2253
}
2226
2254
```
@@ -2243,12 +2271,13 @@ class _:
2243
2271
@annotate (AsmDirSpec )
2244
2272
class _ :
2245
2273
"""
2246
- An inline assembly directive specification .
2274
+ An inline assembly direction specifier .
2247
2275
2248
2276
For example:
2249
2277
```rust
2250
- asm!("nop");
2251
- // ^^^^^
2278
+ use core::arch::asm;
2279
+ asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y);
2280
+ // ^^^ ^^
2252
2281
```
2253
2282
"""
2254
2283
@@ -2260,6 +2289,7 @@ class _:
2260
2289
2261
2290
For example:
2262
2291
```rust
2292
+ use core::arch::asm;
2263
2293
asm!("mov {0}, {1}", out(reg) x, in(reg) y);
2264
2294
// ^ ^
2265
2295
```
@@ -2273,6 +2303,7 @@ class _:
2273
2303
2274
2304
For example:
2275
2305
```rust
2306
+ use core::arch::asm;
2276
2307
asm!("", options(nostack, nomem));
2277
2308
// ^^^^^^^^^^^^^^^^
2278
2309
```
@@ -2286,8 +2317,9 @@ class _:
2286
2317
2287
2318
For example:
2288
2319
```rust
2289
- asm!("mov {0}, {1}", out("eax") x, in("ebx") y);
2290
- // ^^^ ^^^
2320
+ use core::arch::asm;
2321
+ asm!("mov {0}, {1}", out("eax") x, in(EBX) y);
2322
+ // ^^^ ^^^
2291
2323
```
2292
2324
"""
2293
2325
@@ -2299,6 +2331,7 @@ class _:
2299
2331
2300
2332
For example:
2301
2333
```rust
2334
+ use core::arch::asm;
2302
2335
asm!("", clobber_abi("C"));
2303
2336
// ^^^^^^^^^^^^^^^^
2304
2337
```
@@ -2312,6 +2345,7 @@ class _:
2312
2345
2313
2346
For example:
2314
2347
```rust
2348
+ use core::arch::asm;
2315
2349
asm!("mov eax, {const}", const 42);
2316
2350
// ^^^^^^^
2317
2351
```
@@ -2325,8 +2359,12 @@ class _:
2325
2359
2326
2360
For example:
2327
2361
```rust
2328
- asm!("jmp {label}", label = sym my_label);
2329
- // ^^^^^^^^^^^^^^^^^^^^^^
2362
+ use core::arch::asm;
2363
+ asm!(
2364
+ "jmp {}",
2365
+ label { println!("Jumped from asm!"); }
2366
+ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2367
+ );
2330
2368
```
2331
2369
"""
2332
2370
@@ -2338,8 +2376,9 @@ class _:
2338
2376
2339
2377
For example:
2340
2378
```rust
2341
- asm!("mov {out}, {in}", out = out(reg) x, in = in(reg) y);
2342
- // ^^^^^ ^^^^
2379
+ use core::arch::asm;
2380
+ asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y);
2381
+ // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
2343
2382
```
2344
2383
"""
2345
2384
@@ -2351,6 +2390,7 @@ class _:
2351
2390
2352
2391
For example:
2353
2392
```rust
2393
+ use core::arch::asm;
2354
2394
asm!("", options(nostack, nomem));
2355
2395
// ^^^^^^^^^^^^^^^^
2356
2396
```
@@ -2364,6 +2404,7 @@ class _:
2364
2404
2365
2405
For example:
2366
2406
```rust
2407
+ use core::arch::asm;
2367
2408
asm!("mov {0}, {1}", out(reg) x, in(reg) y);
2368
2409
// ^ ^
2369
2410
```
@@ -2377,6 +2418,7 @@ class _:
2377
2418
2378
2419
For example:
2379
2420
```rust
2421
+ use core::arch::asm;
2380
2422
asm!("call {sym}", sym = sym my_function);
2381
2423
// ^^^^^^^^^^^^^^^^^^^^^^
2382
2424
```
0 commit comments