Skip to content

Commit 18df524

Browse files
committed
Deny warnings in doctests
1 parent 22a08ab commit 18df524

File tree

4 files changed

+44
-24
lines changed

4 files changed

+44
-24
lines changed

src/distributions/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ impl<'a, T, D: Distribution<T>> Distribution<T> for &'a D {
187187
/// use rand::distributions::Uniform;
188188
///
189189
/// let mut rng = thread_rng();
190-
/// let mut erased_rng: &mut RngCore = &mut rng;
190+
/// let erased_rng: &mut RngCore = &mut rng;
191191
/// let val: f32 = erased_rng.sample(Uniform);
192192
/// println!("f32 from [0,1): {}", val);
193193
/// ```

src/lib.rs

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,21 @@
5353
//! to seed from a strong parent generator with [`from_rng`]:
5454
//!
5555
//! ```
56+
//! # use rand::{Rng, Error};
5657
//! // seed with fresh entropy:
5758
//! use rand::{StdRng, NewRng};
5859
//! let mut rng = StdRng::new();
60+
//! # let v: u32 = rng.gen();
5961
//!
6062
//! // seed from thread_rng:
6163
//! use rand::{SmallRng, SeedableRng, thread_rng};
62-
//! let mut rng = SmallRng::from_rng(thread_rng());
64+
//!
65+
//! # fn try_inner() -> Result<(), Error> {
66+
//! let mut rng = SmallRng::from_rng(thread_rng())?;
67+
//! # let v: u32 = rng.gen();
68+
//! # Ok(())
69+
//! # }
70+
//! # try_inner().unwrap()
6371
//! ```
6472
//!
6573
//! In case you specifically want to have a reproducible stream of "random"
@@ -175,6 +183,7 @@
175183
html_root_url = "https://docs.rs/rand/0.5")]
176184

177185
#![deny(missing_debug_implementations)]
186+
#![doc(test(attr(allow(unused_variables), deny(warnings))))]
178187

179188
#![cfg_attr(not(feature="std"), no_std)]
180189
#![cfg_attr(all(feature="alloc", not(feature="std")), feature(alloc))]
@@ -292,11 +301,14 @@ pub trait Rand : Sized {
292301
/// Example:
293302
///
294303
/// ```rust
304+
/// # use rand::thread_rng;
295305
/// use rand::Rng;
296306
///
297307
/// fn foo<R: Rng + ?Sized>(rng: &mut R) -> f32 {
298308
/// rng.gen()
299309
/// }
310+
///
311+
/// # let v = foo(&mut thread_rng());
300312
/// ```
301313
///
302314
/// # Iteration
@@ -345,7 +357,7 @@ pub trait Rng: RngCore {
345357
/// use rand::{thread_rng, Rng};
346358
///
347359
/// let mut arr = [0i8; 20];
348-
/// thread_rng().try_fill(&mut arr[..]);
360+
/// thread_rng().fill(&mut arr[..]);
349361
/// ```
350362
///
351363
/// [`fill_bytes`]: https://docs.rs/rand_core/0.1/rand_core/trait.RngCore.html#method.fill_bytes
@@ -433,6 +445,7 @@ pub trait Rng: RngCore {
433445
/// # Example
434446
///
435447
/// ```
448+
/// # #![allow(deprecated)]
436449
/// use rand::{thread_rng, Rng};
437450
///
438451
/// let mut rng = thread_rng();
@@ -480,7 +493,7 @@ pub trait Rng: RngCore {
480493
/// # Example
481494
///
482495
/// ```rust
483-
/// #[allow(deprecated)]
496+
/// # #![allow(deprecated)]
484497
/// use rand::{thread_rng, Rng};
485498
///
486499
/// let mut rng = thread_rng();
@@ -520,7 +533,7 @@ pub trait Rng: RngCore {
520533
/// # Example
521534
///
522535
/// ```rust
523-
/// #[allow(deprecated)]
536+
/// # #![allow(deprecated)]
524537
/// use rand::{thread_rng, Rng};
525538
///
526539
/// let s: String = thread_rng().gen_ascii_chars().take(10).collect();
@@ -750,20 +763,23 @@ pub trait NewRng: SeedableRng {
750763
/// almost certainly be platform limitations or build issues, i.e. most
751764
/// applications targetting PC/mobile platforms should not need to worry
752765
/// about this failing.
753-
///
766+
///
754767
/// If all entropy sources fail this will panic. If you need to handle
755768
/// errors, use the following code, equivalent aside from error handling:
756-
///
769+
///
757770
/// ```rust
758-
/// use rand::{Rng, StdRng, EntropyRng, SeedableRng, Error};
759-
///
760-
/// fn foo() -> Result<(), Error> {
761-
/// // This uses StdRng, but is valid for any R: SeedableRng
762-
/// let mut rng = StdRng::from_rng(EntropyRng::new())?;
763-
///
764-
/// println!("random number: {}", rng.gen_range(1, 10));
765-
/// Ok(())
766-
/// }
771+
/// # use rand::Error;
772+
/// use rand::{Rng, StdRng, EntropyRng, SeedableRng};
773+
///
774+
/// # fn try_inner() -> Result<(), Error> {
775+
/// // This uses StdRng, but is valid for any R: SeedableRng
776+
/// let mut rng = StdRng::from_rng(EntropyRng::new())?;
777+
///
778+
/// println!("random number: {}", rng.gen_range(1, 10));
779+
/// # Ok(())
780+
/// # }
781+
///
782+
/// # try_inner().unwrap()
767783
/// ```
768784
fn new() -> Self;
769785
}
@@ -844,11 +860,13 @@ impl CryptoRng for StdRng {}
844860
/// Initializing `StdRng` with a random seed can be done using `NewRng`:
845861
///
846862
/// ```
863+
/// # use rand::Rng;
847864
/// use rand::{NewRng, SmallRng};
848865
///
849866
/// // Create small, cheap to initialize and fast RNG with a random seed.
850867
/// // The randomness is supplied by the operating system.
851868
/// let mut small_rng = SmallRng::new();
869+
/// # let v: u32 = small_rng.gen();
852870
/// ```
853871
///
854872
/// When initializing a lot of `SmallRng`, using `thread_rng` can be more
@@ -930,6 +948,7 @@ pub fn weak_rng() -> XorShiftRng {
930948
/// # Example
931949
///
932950
/// ```rust
951+
/// # #![allow(deprecated)]
933952
/// use rand::{thread_rng, sample};
934953
///
935954
/// let mut rng = thread_rng();

src/prng/chacha.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ impl ChaChaRng {
108108
/// # Examples
109109
///
110110
/// ```rust
111+
/// # #![allow(deprecated)]
111112
/// use rand::{RngCore, ChaChaRng};
112113
///
113114
/// let mut ra = ChaChaRng::new_unseeded();
@@ -140,11 +141,10 @@ impl ChaChaRng {
140141
/// # Examples
141142
///
142143
/// ```rust
143-
/// use rand::{RngCore, ChaChaRng};
144+
/// use rand::{ChaChaRng, RngCore, SeedableRng};
144145
///
145-
/// let mut rng1 = ChaChaRng::new_unseeded(); // Use `ChaChaRng::new()` or
146-
/// // `ChaChaRng::from_rng()`
147-
/// // outside of testing.
146+
/// // Note: Use `NewRng` or `ChaChaRng::from_rng()` outside of testing.
147+
/// let mut rng1 = ChaChaRng::from_seed([0; 32]);
148148
/// let mut rng2 = rng1.clone();
149149
///
150150
/// // Skip to round 20. Because every round generates 16 `u32` values, this
@@ -168,11 +168,10 @@ impl ChaChaRng {
168168
/// # Examples
169169
///
170170
/// ```rust
171-
/// use rand::{RngCore, ChaChaRng};
171+
/// use rand::{ChaChaRng, RngCore, SeedableRng};
172172
///
173-
/// let mut rng = ChaChaRng::new_unseeded(); // Use `ChaChaRng::new()` or
174-
/// // `ChaChaRng::from_rng()`
175-
/// // outside of testing.
173+
/// // Note: Use `NewRng` or `ChaChaRng::from_rng()` outside of testing.
174+
/// let mut rng = ChaChaRng::from_seed([0; 32]);
176175
/// rng.set_rounds(8);
177176
///
178177
/// assert_eq!(rng.next_u32(), 0x2fef003e);

src/thread_rng.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ impl CryptoRng for ThreadRng {}
129129
/// # Examples
130130
///
131131
/// ```
132+
/// # #![allow(deprecated)]
132133
/// let x = rand::random::<u8>();
133134
/// println!("{}", x);
134135
///
@@ -144,6 +145,7 @@ impl CryptoRng for ThreadRng {}
144145
/// following example can increase performance.
145146
///
146147
/// ```
148+
/// # #![allow(deprecated)]
147149
/// use rand::Rng;
148150
///
149151
/// let mut v = vec![1, 2, 3];

0 commit comments

Comments
 (0)