Open
Description
the third code snippet on the Static chapter seems to be meant to run without errors as an example of valid code, but fails with 2 warnings and 1 error.
code snippet:
extern crate rand;
use rand::Fill;
fn random_vec() -> &'static [usize; 100] {
let mut rng = rand::thread_rng();
let mut boxed = Box::new([0; 100]);
boxed.try_fill(&mut rng).unwrap();
Box::leak(boxed)
}
fn main() {
let first: &'static [usize; 100] = random_vec();
let second: &'static [usize; 100] = random_vec();
assert_ne!(first, second)
}
output from the run button:
Compiling playground v0.0.1 (/playground)
warning: unused import: `rand::Fill`
--> src/main.rs:2:5
|
2 | use rand::Fill;
| ^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
--> src/main.rs:5:25
|
5 | let mut rng = rand::thread_rng();
| ^^^^^^^^^^
|
= note: `#[warn(deprecated)]` on by default
error[E0599]: no method named `try_fill` found for struct `Box<[{integer}; 100]>` in the current scope
--> src/main.rs:7:11
|
7 | boxed.try_fill(&mut rng).unwrap();
| ^^^^^^^^
|
help: there is a method `fill` with a similar name
|
7 - boxed.try_fill(&mut rng).unwrap();
7 + boxed.fill(&mut rng).unwrap();
|
For more information about this error, try `rustc --explain E0599`.
warning: `playground` (bin "playground") generated 2 warnings
error: could not compile `playground` (bin "playground") due to 1 previous error; 2 warnings emitted
modifying the snippet to this seems to work fine
extern crate rand;
use rand::Fill;
fn random_vec() -> &'static [u8; 100] {
let mut rng = rand::rng();
let mut boxed = Box::new([0; 100]);
boxed.fill(&mut rng);
Box::leak(boxed)
}
fn main() {
let first: &'static [u8; 100] = random_vec();
let second: &'static [u8; 100] = random_vec();
assert_ne!(first, second)
}
Metadata
Metadata
Assignees
Labels
No labels