@@ -98,6 +98,9 @@ impl AsRef<[u8]> for NSData {
9898 }
9999}
100100
101+ // Note: We don't implement `Borrow<[u8]>` since we can't guarantee that `Eq`,
102+ // `Ord` and `Hash` are equal for `NSData` vs. `[u8]`!
103+
101104impl < I : SliceIndex < [ u8 ] > > Index < I > for NSData {
102105 type Output = I :: Output ;
103106
@@ -433,29 +436,34 @@ mod tests {
433436 }
434437
435438 #[ test]
436- fn test_as_ref ( ) {
437- fn impls_as_ref < T : AsRef < U > + ?Sized , U : ?Sized > ( _: & T ) { }
438- fn impls_as_mut < T : AsMut < U > + ?Sized , U : ?Sized > ( _: & mut T ) { }
439+ fn test_as_ref_borrow ( ) {
440+ use core:: borrow:: { Borrow , BorrowMut } ;
441+
442+ fn impls_borrow < T : AsRef < U > + Borrow < U > + ?Sized , U : ?Sized > ( _: & T ) { }
443+ fn impls_borrow_mut < T : AsMut < U > + BorrowMut < U > + ?Sized , U : ?Sized > ( _: & mut T ) { }
439444
440445 let mut obj = NSMutableData :: new ( ) ;
441- impls_as_ref :: < Id < NSMutableData , Owned > , NSMutableData > ( & obj) ;
442- impls_as_mut :: < Id < NSMutableData , Owned > , NSMutableData > ( & mut obj) ;
443-
444- impls_as_ref :: < NSMutableData , NSMutableData > ( & obj) ;
445- impls_as_mut :: < NSMutableData , NSMutableData > ( & mut obj) ;
446- impls_as_ref :: < NSMutableData , NSData > ( & obj) ;
447- impls_as_mut :: < NSMutableData , NSData > ( & mut obj) ;
448- impls_as_ref :: < NSMutableData , NSObject > ( & obj) ;
449- impls_as_mut :: < NSMutableData , NSObject > ( & mut obj) ;
450- impls_as_ref :: < NSMutableData , Object > ( & obj) ;
451- impls_as_mut :: < NSMutableData , Object > ( & mut obj) ;
452-
453- impls_as_ref :: < NSData , NSData > ( & obj) ;
454- impls_as_mut :: < NSData , NSData > ( & mut obj) ;
455- impls_as_ref :: < NSData , NSObject > ( & obj) ;
456- impls_as_mut :: < NSData , NSObject > ( & mut obj) ;
457- impls_as_ref :: < NSData , Object > ( & obj) ;
458- impls_as_mut :: < NSData , Object > ( & mut obj) ;
446+ impls_borrow :: < Id < NSMutableData , Owned > , NSMutableData > ( & obj) ;
447+ impls_borrow_mut :: < Id < NSMutableData , Owned > , NSMutableData > ( & mut obj) ;
448+
449+ impls_borrow :: < NSMutableData , NSMutableData > ( & obj) ;
450+ impls_borrow_mut :: < NSMutableData , NSMutableData > ( & mut obj) ;
451+ impls_borrow :: < NSMutableData , NSData > ( & obj) ;
452+ impls_borrow_mut :: < NSMutableData , NSData > ( & mut obj) ;
453+ impls_borrow :: < NSMutableData , NSObject > ( & obj) ;
454+ impls_borrow_mut :: < NSMutableData , NSObject > ( & mut obj) ;
455+ impls_borrow :: < NSMutableData , Object > ( & obj) ;
456+ impls_borrow_mut :: < NSMutableData , Object > ( & mut obj) ;
457+
458+ impls_borrow :: < NSData , NSData > ( & obj) ;
459+ impls_borrow_mut :: < NSData , NSData > ( & mut obj) ;
460+ impls_borrow :: < NSData , NSObject > ( & obj) ;
461+ impls_borrow_mut :: < NSData , NSObject > ( & mut obj) ;
462+ impls_borrow :: < NSData , Object > ( & obj) ;
463+ impls_borrow_mut :: < NSData , Object > ( & mut obj) ;
464+
465+ fn impls_as_ref < T : AsRef < U > + ?Sized , U : ?Sized > ( _: & T ) { }
466+ fn impls_as_mut < T : AsMut < U > + ?Sized , U : ?Sized > ( _: & mut T ) { }
459467
460468 impls_as_ref :: < NSMutableData , [ u8 ] > ( & obj) ;
461469 impls_as_mut :: < NSMutableData , [ u8 ] > ( & mut obj) ;
0 commit comments