@@ -512,7 +512,7 @@ pub trait RngCore {
512
512
/// (converting that randomness to the desired type and distribution).
513
513
///
514
514
/// [`RngCore`]: trait.RngCore.html
515
- pub trait Rng : RngCore {
515
+ pub trait Rng : RngCore + Sized {
516
516
/// Return a random value of a `Rand` type.
517
517
///
518
518
/// # Example
@@ -526,7 +526,7 @@ pub trait Rng: RngCore {
526
526
/// println!("{:?}", rng.gen::<(f64, bool)>());
527
527
/// ```
528
528
#[ inline( always) ]
529
- fn gen < T : Rand > ( & mut self ) -> T where Self : Sized {
529
+ fn gen < T : Rand > ( & mut self ) -> T {
530
530
Rand :: rand ( self )
531
531
}
532
532
@@ -544,7 +544,7 @@ pub trait Rng: RngCore {
544
544
/// println!("{:?}", rng.gen_iter::<(f64, bool)>().take(5)
545
545
/// .collect::<Vec<(f64, bool)>>());
546
546
/// ```
547
- fn gen_iter < ' a , T : Rand > ( & ' a mut self ) -> Generator < ' a , T , Self > where Self : Sized {
547
+ fn gen_iter < ' a , T : Rand > ( & ' a mut self ) -> Generator < ' a , T , Self > {
548
548
Generator { rng : self , _marker : marker:: PhantomData }
549
549
}
550
550
@@ -572,7 +572,7 @@ pub trait Rng: RngCore {
572
572
/// let m: f64 = rng.gen_range(-40.0f64, 1.3e5f64);
573
573
/// println!("{}", m);
574
574
/// ```
575
- fn gen_range < T : PartialOrd + SampleRange > ( & mut self , low : T , high : T ) -> T where Self : Sized {
575
+ fn gen_range < T : PartialOrd + SampleRange > ( & mut self , low : T , high : T ) -> T {
576
576
assert ! ( low < high, "Rng::gen_range called with low >= high" ) ;
577
577
Range :: new ( low, high) . ind_sample ( self )
578
578
}
@@ -587,7 +587,7 @@ pub trait Rng: RngCore {
587
587
/// let mut rng = thread_rng();
588
588
/// println!("{}", rng.gen_weighted_bool(3));
589
589
/// ```
590
- fn gen_weighted_bool ( & mut self , n : u32 ) -> bool where Self : Sized {
590
+ fn gen_weighted_bool ( & mut self , n : u32 ) -> bool {
591
591
n <= 1 || self . gen_range ( 0 , n) == 0
592
592
}
593
593
@@ -601,7 +601,7 @@ pub trait Rng: RngCore {
601
601
/// let s: String = thread_rng().gen_ascii_chars().take(10).collect();
602
602
/// println!("{}", s);
603
603
/// ```
604
- fn gen_ascii_chars < ' a > ( & ' a mut self ) -> AsciiGenerator < ' a , Self > where Self : Sized {
604
+ fn gen_ascii_chars < ' a > ( & ' a mut self ) -> AsciiGenerator < ' a , Self > {
605
605
AsciiGenerator { rng : self }
606
606
}
607
607
@@ -619,7 +619,7 @@ pub trait Rng: RngCore {
619
619
/// println!("{:?}", rng.choose(&choices));
620
620
/// assert_eq!(rng.choose(&choices[..0]), None);
621
621
/// ```
622
- fn choose < ' a , T > ( & mut self , values : & ' a [ T ] ) -> Option < & ' a T > where Self : Sized {
622
+ fn choose < ' a , T > ( & mut self , values : & ' a [ T ] ) -> Option < & ' a T > {
623
623
if values. is_empty ( ) {
624
624
None
625
625
} else {
@@ -630,7 +630,7 @@ pub trait Rng: RngCore {
630
630
/// Return a mutable pointer to a random element from `values`.
631
631
///
632
632
/// Return `None` if `values` is empty.
633
- fn choose_mut < ' a , T > ( & mut self , values : & ' a mut [ T ] ) -> Option < & ' a mut T > where Self : Sized {
633
+ fn choose_mut < ' a , T > ( & mut self , values : & ' a mut [ T ] ) -> Option < & ' a mut T > {
634
634
if values. is_empty ( ) {
635
635
None
636
636
} else {
@@ -656,7 +656,7 @@ pub trait Rng: RngCore {
656
656
/// rng.shuffle(&mut y);
657
657
/// println!("{:?}", y);
658
658
/// ```
659
- fn shuffle < T > ( & mut self , values : & mut [ T ] ) where Self : Sized {
659
+ fn shuffle < T > ( & mut self , values : & mut [ T ] ) {
660
660
let mut i = values. len ( ) ;
661
661
while i >= 2 {
662
662
// invariant: elements with index >= i have been locked in place.
0 commit comments