@@ -1475,14 +1475,17 @@ mod prim_usize {}
1475
1475
///
1476
1476
/// For instance, this means that unsafe code in a safe function may assume these invariants are
1477
1477
/// ensured of arguments passed by the caller, and it may assume that these invariants are ensured
1478
- /// of return values from any safe functions it calls. In most cases, the inverse is also true:
1479
- /// unsafe code must not violate these invariants when passing arguments to safe functions or
1480
- /// returning values from safe functions; such violations may result in undefined behavior. Where
1481
- /// exceptions to this latter requirement exist, they will be called out explicitly in documentation.
1478
+ /// of return values from any safe functions it calls.
1479
+ ///
1480
+ /// For the other direction, things are more complicated: when unsafe code passes arguments
1481
+ /// to safe functions or returns values from safe functions, they generally must *at least*
1482
+ /// not violate these invariants. The full requirements are stronger, as the reference generally
1483
+ /// must point to data that is safe to use at type `T`.
1482
1484
///
1483
1485
/// It is not decided yet whether unsafe code may violate these invariants temporarily on internal
1484
1486
/// data. As a consequence, unsafe code which violates these invariants temporarily on internal data
1485
- /// may become unsound in future versions of Rust depending on how this question is decided.
1487
+ /// may be unsound or become unsound in future versions of Rust depending on how this question is
1488
+ /// decided.
1486
1489
///
1487
1490
/// [allocated object]: ptr#allocated-object
1488
1491
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
0 commit comments