@@ -353,8 +353,8 @@ impl<T: ?Sized> *mut T {
353
353
///
354
354
/// If any of the following conditions are violated, the result is Undefined Behavior:
355
355
///
356
- /// * The computed offset, `count * size_of::<T>()` bytes (using unbounded arithmetic),
357
- /// must fit in an `isize`.
356
+ /// * The offset in bytes , `count * size_of::<T>()`, computed on mathematical integers (without
357
+ /// "wrapping around"), must fit in an `isize`.
358
358
///
359
359
/// * If the computed offset is non-zero, then `self` must be derived from a pointer to some
360
360
/// [allocated object], and the entire memory range between `self` and the result must be in
@@ -399,7 +399,7 @@ impl<T: ?Sized> *mut T {
399
399
unsafe { intrinsics:: offset ( self , count) }
400
400
}
401
401
402
- /// Calculates the offset from a pointer in bytes .
402
+ /// Adds a signed offset in bytes to a pointer .
403
403
///
404
404
/// `count` is in units of **bytes**.
405
405
///
@@ -889,7 +889,11 @@ impl<T: ?Sized> *mut T {
889
889
unsafe { ( self as * const T ) . sub_ptr ( origin) }
890
890
}
891
891
892
- /// Adds an offset to a pointer.
892
+ /// Adds an unsigned offset to a pointer.
893
+ ///
894
+ /// This can only move the pointer forward (or not move it). If you need to move forward or
895
+ /// backward depending on the value, then you might want [`offset`](#method.offset) instead
896
+ /// which takes a signed offset.
893
897
///
894
898
/// `count` is in units of T; e.g., a `count` of 3 represents a pointer
895
899
/// offset of `3 * size_of::<T>()` bytes.
@@ -898,8 +902,8 @@ impl<T: ?Sized> *mut T {
898
902
///
899
903
/// If any of the following conditions are violated, the result is Undefined Behavior:
900
904
///
901
- /// * The computed offset, `count * size_of::<T>()` bytes (using unbounded arithmetic),
902
- /// must fit in an `isize`.
905
+ /// * The offset in bytes , `count * size_of::<T>()`, computed on mathematical integers (without
906
+ /// "wrapping around"), must fit in an `isize`.
903
907
///
904
908
/// * If the computed offset is non-zero, then `self` must be derived from a pointer to some
905
909
/// [allocated object], and the entire memory range between `self` and the result must be in
@@ -942,7 +946,7 @@ impl<T: ?Sized> *mut T {
942
946
unsafe { intrinsics:: offset ( self , count) }
943
947
}
944
948
945
- /// Calculates the offset from a pointer in bytes (convenience for `.byte_offset(count as isize)`) .
949
+ /// Adds an unsigned offset in bytes to a pointer .
946
950
///
947
951
/// `count` is in units of bytes.
948
952
///
@@ -963,7 +967,11 @@ impl<T: ?Sized> *mut T {
963
967
unsafe { self . cast :: < u8 > ( ) . add ( count) . with_metadata_of ( self ) }
964
968
}
965
969
966
- /// Subtracts an offset from a pointer.
970
+ /// Subtracts an unsigned offset from a pointer.
971
+ ///
972
+ /// This can only move the pointer backward (or not move it). If you need to move forward or
973
+ /// backward depending on the value, then you might want [`offset`](#method.offset) instead
974
+ /// which takes a signed offset.
967
975
///
968
976
/// `count` is in units of T; e.g., a `count` of 3 represents a pointer
969
977
/// offset of `3 * size_of::<T>()` bytes.
@@ -972,8 +980,8 @@ impl<T: ?Sized> *mut T {
972
980
///
973
981
/// If any of the following conditions are violated, the result is Undefined Behavior:
974
982
///
975
- /// * The computed offset, `count * size_of::<T>()` bytes (using unbounded arithmetic),
976
- /// must fit in an `isize`.
983
+ /// * The offset in bytes , `count * size_of::<T>()`, computed on mathematical integers (without
984
+ /// "wrapping around"), must fit in an `isize`.
977
985
///
978
986
/// * If the computed offset is non-zero, then `self` must be derived from a pointer to some
979
987
/// [allocated object], and the entire memory range between `self` and the result must be in
@@ -1024,8 +1032,7 @@ impl<T: ?Sized> *mut T {
1024
1032
}
1025
1033
}
1026
1034
1027
- /// Calculates the offset from a pointer in bytes (convenience for
1028
- /// `.byte_offset((count as isize).wrapping_neg())`).
1035
+ /// Subtracts an unsigned offset in bytes from a pointer.
1029
1036
///
1030
1037
/// `count` is in units of bytes.
1031
1038
///
0 commit comments