2015-03-29 4 views
13

मैंमैं जंग 1.0 में यादृच्छिक संख्या कैसे प्राप्त कर सकता हूं?

use std::rand::{task_rng, Rng}; 

fn main() { 
    // a number from [-40.0, 13000.0) 
    let num: f64 = task_rng().gen_range(-40.0, 1.3e4); 
    println!("{}", num); 
} 

की कोशिश की लेकिन इस

error[E0432]: unresolved import `std::rand::task_rng` 
--> rand.rs:1:17 
    | 
1 | use std::rand::{task_rng, Rng}; 
    |     ^^^^^^^^ no `task_rng` in `rand` 

error[E0432]: unresolved import `std::rand::Rng` 
--> rand.rs:1:27 
    | 
1 | use std::rand::{task_rng, Rng}; 
    |       ^^^ no `Rng` in `rand` 

error[E0603]: module `rand` is private 
--> rand.rs:1:17 
    | 
1 | use std::rand::{task_rng, Rng}; 
    |     ^^^^^^^^ 

error[E0603]: module `rand` is private 
--> rand.rs:1:27 
    | 
1 | use std::rand::{task_rng, Rng}; 
    |       ^^^ 

देता है और मैं

extern crate rand; 
use rand::Rng; 

fn main() { 
    let mut rng = rand::thread_rng(); 
    if rng.gen() { 
     // random bool 
     println!("i32: {}, u32: {}", rng.gen::<i32>(), rng.gen::<u32>()) 
    } 
    let tuple = rand::random::<(f64, char)>(); 
    println!("{:?}", tuple) 
} 

की कोशिश की और

error[E0425]: cannot find function `thread_rng` in module `rand` 
--> rand.rs:5:29 
    | 
5 |   let mut rng = rand::thread_rng(); 
    |        ^^^^^^^^^^ not found in `rand` 
    | 
help: possible candidate is found in another module, you can import it into scope 
    |  use std::__rand::thread_rng; 

error[E0425]: cannot find function `random` in module `rand` 
    --> rand.rs:10:27 
    | 
10 |   let tuple = rand::random::<(f64, char)>(); 
    |       ^^^^^^ not found in `rand` 

error: use of unstable library feature 'rand': use `rand` from crates.io (see issue #27703) 
--> rand.rs:1:5 
    | 
1 |  extern crate rand; 
    |  ^^^^^^^^^^^^^^^^^^ 

error: use of unstable library feature 'rand': use `rand` from crates.io (see issue #27703) 
--> rand.rs:2:9 
    | 
2 |  use rand::Rng; 
    |   ^^^^^^^^^ 
+0

ध्यान दें कि यह एक शुरुआती प्रश्न है। यह है (एक "हैलो वर्ल्ड" के बाद) दूसरी बात मैंने कोशिश की है। –

उत्तर

19

मिला अब तक अतीत में, rand क्रेट मानक पुस्तकालय का हिस्सा था लेकिन लंबे समय से extracted to a crate रहा है।

निर्दिष्ट एक Cargo.toml:

[package] 
name = "stackoverflow" 
version = "0.0.1" 
authors = ["A. Developer <[email protected]>"] 

[dependencies] 
rand = "0.3.15" # Or a newer version 

फिर अपने उदाहरण कोड काम करता है:

$ cargo run 
    Running `target/debug/so` 
(0.310133, '\u{cd8fb}') 

$ cargo run 
    Running `target/debug/so` 
i32: 1568599182, u32: 2222135793 
(0.906881, '\u{9edc}') 
:

extern crate rand; 

use rand::Rng; 

fn main() { 
    let mut rng = rand::thread_rng(); 
    if rng.gen() { // random bool 
     println!("i32: {}, u32: {}", rng.gen::<i32>(), rng.gen::<u32>()) 
    } 
    let tuple = rand::random::<(f64, char)>(); 
    println!("{:?}", tuple) 
} 
उत्पादन के साथ

यह टोकरा आप उपयोग किया जाना चाहिए

क्यों थे इन उपयोगी कार्यों stdlib से हटा दिया?

जंग के पास मानक पुस्तकालय की बजाय क्रेट्स जितना संभव हो सके रखने का दर्शन है। यह कोड के प्रत्येक टुकड़े को मानक लाइब्रेरी की तुलना में एक अलग दर पर विकसित करने और विकसित करने की अनुमति देता है और कोड को को का उपयोग बंद होने की अनुमति देता है, इसे हमेशा के लिए बनाए रखने के लिए मजबूर किए बिना।

एक आम उदाहरण sequence of HTTP libraries in Python है। कई पैकेज हैं जो सभी एक ही चीज को अलग-अलग तरीकों से करते हैं और पाइथन रखरखाव को पीछे की संगतता प्रदान करने के लिए सभी रखना पड़ता है।

क्रेट्स इस विशेष परिणाम से बचा जा सकता है। यदि एक टोकरी वास्तव में लंबे समय तक स्थिर हो जाती है, तो मुझे यकीन है कि इसे मानक पुस्तकालय में फिर से जोड़ा जा सकता है।

+2

क्या आप कृपया बता सकते हैं कि इन उपयोगी कार्यों को stdlib से क्यों हटाया जाता है? –

संबंधित मुद्दे

 संबंधित मुद्दे