@@ -393,6 +393,48 @@ $EndFeature, "
393
393
}
394
394
}
395
395
396
+ doc_comment! {
397
+ concat!( "Returns the number of leading ones in the binary representation of `self`.
398
+
399
+ # Examples
400
+
401
+ Basic usage:
402
+
403
+ ```
404
+ " , $Feature, "#![feature(leading_trailing_ones)]
405
+ let n = -1" , stringify!( $SelfT) , ";
406
+
407
+ assert_eq!(n.leading_ones(), " , stringify!( $BITS) , ");" ,
408
+ $EndFeature, "
409
+ ```" ) ,
410
+ #[ unstable( feature = "leading_trailing_ones" , reason = "newly added" , issue = "0" ) ]
411
+ #[ inline]
412
+ pub const fn leading_ones( self ) -> u32 {
413
+ ( self as $UnsignedT) . leading_ones( )
414
+ }
415
+ }
416
+
417
+ doc_comment! {
418
+ concat!( "Returns the number of trailing ones in the binary representation of `self`.
419
+
420
+ # Examples
421
+
422
+ Basic usage:
423
+
424
+ ```
425
+ " , $Feature, "#![feature(leading_trailing_ones)]
426
+ let n = 3" , stringify!( $SelfT) , ";
427
+
428
+ assert_eq!(n.trailing_ones(), 2);" ,
429
+ $EndFeature, "
430
+ ```" ) ,
431
+ #[ unstable( feature = "leading_trailing_ones" , reason = "newly added" , issue = "0" ) ]
432
+ #[ inline]
433
+ pub const fn trailing_ones( self ) -> u32 {
434
+ ( self as $UnsignedT) . trailing_ones( )
435
+ }
436
+ }
437
+
396
438
doc_comment! {
397
439
concat!( "Shifts the bits to the left by a specified amount, `n`,
398
440
wrapping the truncated bits to the end of the resulting integer.
@@ -2485,6 +2527,47 @@ assert_eq!(n.trailing_zeros(), 3);", $EndFeature, "
2485
2527
}
2486
2528
}
2487
2529
2530
+ doc_comment! {
2531
+ concat!( "Returns the number of leading ones in the binary representation of `self`.
2532
+
2533
+ # Examples
2534
+
2535
+ Basic usage:
2536
+
2537
+ ```
2538
+ " , $Feature, "#![feature(leading_trailing_ones)]
2539
+ let n = !(" , stringify!( $SelfT) , "::max_value() >> 2);
2540
+
2541
+ assert_eq!(n.leading_ones(), 2);" , $EndFeature, "
2542
+ ```" ) ,
2543
+ #[ unstable( feature = "leading_trailing_ones" , reason = "newly added" , issue = "0" ) ]
2544
+ #[ inline]
2545
+ pub const fn leading_ones( self ) -> u32 {
2546
+ ( !self ) . leading_zeros( )
2547
+ }
2548
+ }
2549
+
2550
+ doc_comment! {
2551
+ concat!( "Returns the number of trailing ones in the binary representation
2552
+ of `self`.
2553
+
2554
+ # Examples
2555
+
2556
+ Basic usage:
2557
+
2558
+ ```
2559
+ " , $Feature, "#![feature(leading_trailing_ones)]
2560
+ let n = 0b1010111" , stringify!( $SelfT) , ";
2561
+
2562
+ assert_eq!(n.trailing_ones(), 3);" , $EndFeature, "
2563
+ ```" ) ,
2564
+ #[ unstable( feature = "leading_trailing_ones" , reason = "newly added" , issue = "0" ) ]
2565
+ #[ inline]
2566
+ pub const fn trailing_ones( self ) -> u32 {
2567
+ ( !self ) . trailing_zeros( )
2568
+ }
2569
+ }
2570
+
2488
2571
doc_comment! {
2489
2572
concat!( "Shifts the bits to the left by a specified amount, `n`,
2490
2573
wrapping the truncated bits to the end of the resulting integer.
0 commit comments