File tree Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -607,8 +607,9 @@ impl<T: ?Sized> *const T {
607607    /// Calculates the distance between two pointers. The returned value is in 
608608     /// units of T: the distance in bytes divided by `mem::size_of::<T>()`. 
609609     /// 
610-      /// This function is the inverse of [`offset`]: it is valid to call and will return 
611-      /// `n` if and only if `origin.offset(n)` is valid to call and will return `self`. 
610+      /// This is equivalent to `(self as isize - origin as isize) / (mem::size_of::<T>() as isize)`, 
611+      /// except that it has a lot more opportunities for UB, in exchange for the compiler 
612+      /// better understanding what you are doing. 
612613     /// 
613614     /// [`offset`]: #method.offset 
614615     /// 
@@ -617,7 +618,7 @@ impl<T: ?Sized> *const T {
617618     /// If any of the following conditions are violated, the result is Undefined 
618619     /// Behavior: 
619620     /// 
620-      /// * Both the starting  and other pointer  must be either in bounds or one 
621+      /// * Both `self`  and `origin`  must be either in bounds or one 
621622     ///   byte past the end of the same [allocated object]. 
622623     /// 
623624     /// * Both pointers must be *derived from* a pointer to the same object. 
Original file line number Diff line number Diff line change @@ -781,8 +781,9 @@ impl<T: ?Sized> *mut T {
781781    /// Calculates the distance between two pointers. The returned value is in 
782782     /// units of T: the distance in bytes divided by `mem::size_of::<T>()`. 
783783     /// 
784-      /// This function is the inverse of [`offset`]: it is valid to call and will return 
785-      /// `n` if and only if `origin.offset(n)` is valid to call and will return `self`. 
784+      /// This is equivalent to `(self as isize - origin as isize) / (mem::size_of::<T>() as isize)`, 
785+      /// except that it has a lot more opportunities for UB, in exchange for the compiler 
786+      /// better understanding what you are doing. 
786787     /// 
787788     /// [`offset`]: pointer#method.offset-1 
788789     /// 
@@ -791,7 +792,7 @@ impl<T: ?Sized> *mut T {
791792     /// If any of the following conditions are violated, the result is Undefined 
792793     /// Behavior: 
793794     /// 
794-      /// * Both the starting  and other pointer  must be either in bounds or one 
795+      /// * Both `self`  and `origin`  must be either in bounds or one 
795796     ///   byte past the end of the same [allocated object]. 
796797     /// 
797798     /// * Both pointers must be *derived from* a pointer to the same object. 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments