@@ -1420,111 +1420,13 @@ names are effectively reserved. Some significant attributes include:
1420
1420
1421
1421
* The ` doc ` attribute, for documenting code in-place.
1422
1422
* The ` cfg ` attribute, for conditional-compilation by build-configuration.
1423
- * The ` lang ` attribute, for custom definitions of traits and functions that are known to the Rust compiler (see [ Language items] ( #language-items ) ).
1424
1423
* The ` link ` attribute, for describing linkage metadata for a crate.
1425
1424
* The ` test ` attribute, for marking functions as unit tests.
1426
- * The ` allow ` , ` warn ` , ` forbid ` , and ` deny ` attributes, for controlling lint checks. Lint checks supported
1425
+ * The ` allow ` , ` warn ` , ` forbid ` , and ` deny ` attributes, for controling lint checks. Lint checks supported
1427
1426
by the compiler can be found via ` rustc -W help ` .
1428
1427
1429
1428
Other attributes may be added or removed during development of the language.
1430
1429
1431
- ### Language items
1432
-
1433
- Some primitive Rust operations are defined in Rust code,
1434
- rather than being implemented directly in C or assembly language.
1435
- The definitions of these operations have to be easy for the compiler to find.
1436
- The ` lang ` attribute makes it possible to declare these operations.
1437
- For example, the ` str ` module in the Rust core library defines the string equality function:
1438
-
1439
- ~~~
1440
- #[lang="str_eq"]
1441
- pub fn eq_slice(a: &str, b: &str) -> bool {
1442
- true // not actually the implementation
1443
- }
1444
- ~~~
1445
-
1446
- The name ` str_eq ` has a special meaning to the Rust compiler,
1447
- and the presence of this definition means that it will use this definition
1448
- when generating calls to the string equality function.
1449
-
1450
- A complete list of the built-in language items follows:
1451
-
1452
- #### Traits
1453
-
1454
- ` const `
1455
- : Cannot be mutated.
1456
- ` copy `
1457
- : Can be implicitly copied.
1458
- ` owned `
1459
- : Are uniquely owned.
1460
- ` durable `
1461
- : Contain borrowed pointers.
1462
- ` drop `
1463
- : Have finalizers.
1464
- ` add `
1465
- : Elements can be added (for example, integers and floats).
1466
- ` sub `
1467
- : Elements can be subtracted.
1468
- ` mul `
1469
- : Elements can be multiplied.
1470
- ` div `
1471
- : Elements can be divided.
1472
- ` mod `
1473
- : Elements have a modulo operation.
1474
- ` neg `
1475
- : Elements can be negated arithmetically.
1476
- ` not `
1477
- : Elements can be negated logically.
1478
- ` bitxor `
1479
- : Elements have an exclusive-or operation.
1480
- ` bitand `
1481
- : Elements have a bitwise ` and ` operation.
1482
- ` bitor `
1483
- : Elements have a bitwise ` or ` operation.
1484
- ` shl `
1485
- : Elements have a left shift operation.
1486
- ` shr `
1487
- : Elements have a right shift operation.
1488
- ` index `
1489
- : Elements can be indexed.
1490
- ` eq `
1491
- : Elements can be compared for equality.
1492
- ` ord `
1493
- : Elements have a partial ordering.
1494
-
1495
- #### Operations
1496
-
1497
- ` str_eq `
1498
- : Compare two strings for equality.
1499
- ` uniq_str_eq `
1500
- : Compare two owned strings for equality.
1501
- ` annihilate `
1502
- : Destroy a box before freeing it.
1503
- ` log_type `
1504
- : Generically print a string representation of any type.
1505
- ` fail_ `
1506
- : Abort the program with an error.
1507
- ` fail_bounds_check `
1508
- : Abort the program with a bounds check error.
1509
- ` exchange_malloc `
1510
- : Allocate memory on the exchange heap.
1511
- ` exchange_free `
1512
- : Free memory that was allocated on the exchange heap.
1513
- ` malloc `
1514
- : Allocate memory on the managed heap.
1515
- ` free `
1516
- : Free memory that was allocated on the managed heap.
1517
- ` borrow_as_imm `
1518
- : Create an immutable borrowed pointer to a mutable value.
1519
- ` return_to_mut `
1520
- : Release a borrowed pointer created with ` return_to_mut `
1521
- ` check_not_borrowed `
1522
- : Fail if a value has existing borrowed pointers to it.
1523
- ` strdup_uniq `
1524
- : Return a new unique string containing a copy of the contents of a unique string.
1525
-
1526
- > ** Note:** This list is likely to become out of date. We should auto-generate it
1527
- > from ` librustc/middle/lang_items.rs ` .
1528
1430
1529
1431
# Statements and expressions
1530
1432
0 commit comments