#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk.png",
html_favicon_url = "https://www.rust-lang.org/favicon.ico")]
extern crate rand;
use std::io::{stdin};
use rand::prelude::*;
#[cfg(test)]
mod tests {
#[test]
fn malou() {
assert_eq!("test","test");
}
}
pub fn random(start: i32,end: i32) -> i32 {
let mut rng: rand::rngs::ThreadRng = rand::thread_rng();
rng.gen_range(start,end)
}
pub fn random_f64() -> f64 {
let mut rng: rand::rngs::ThreadRng = rand::thread_rng();
rng.gen()
}
pub fn random_f32() -> f32 {
let mut rng: rand::rngs::ThreadRng = rand::thread_rng();
rng.gen()
}
pub fn input_str(message: &str) -> String {
let mut s=String::new();
print!("{}",message);
stdin().read_line(&mut s).expect("Did not enter a correct string");
if let Some('\n')=s.chars().next_back() {
s.pop();
}
if let Some('\r')=s.chars().next_back() {
s.pop();
}
s
}
pub fn input(message: &str) -> String {
input_str(message)
}
pub fn input_string(message: &str) -> String {
input_str(message)
}
pub fn try_input_f64(message: &str) -> Option<f64> {
match input_str(message).parse::<f64>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_f64(message: &str) -> f64 {
match input_str(message).parse::<f64>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_f32(message: &str) -> Option<f32> {
match input_str(message).parse::<f32>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_f32(message: &str) -> f32 {
match input_str(message).parse::<f32>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_i64(message: &str) -> Option<i64> {
match input_str(message).parse::<i64>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_i64(message: &str) -> i64 {
match input_str(message).parse::<i64>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_i32(message: &str) -> Option<i32> {
match input_str(message).parse::<i32>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_i32(message: &str) -> i32 {
match input_str(message).parse::<i32>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_i16(message: &str) -> Option<i16> {
match input_str(message).parse::<i16>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_i16(message: &str) -> i16 {
match input_str(message).parse::<i16>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_i8(message: &str) -> Option<i8> {
match input_str(message).parse::<i8>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_i8(message: &str) -> i8 {
match input_str(message).parse::<i8>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_u64(message: &str) -> Option<u64> {
match input_str(message).parse::<u64>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_u64(message: &str) -> u64 {
match input_str(message).parse::<u64>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_u32(message: &str) -> Option<u32> {
match input_str(message).parse::<u32>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_u32(message: &str) -> u32 {
match input_str(message).parse::<u32>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_u16(message: &str) -> Option<u16> {
match input_str(message).parse::<u16>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_u16(message: &str) -> u16 {
match input_str(message).parse::<u16>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_u8(message: &str) -> Option<u8> {
match input_str(message).parse::<u8>() {
Ok(e) => {
Some(e)
},
_ => {
None
}
}
}
pub fn input_u8(message: &str) -> u8 {
match input_str(message).parse::<u8>() {
Ok(e) => {
e
},
_ => {
panic!("Can't parse user input");
}
}
}
pub fn try_input_bool(message: &str) -> Option<bool> {
let de: &str = &(input_str(message).to_lowercase());
match de {
"true" => {
Some(true)
},
"false" => {
Some(false)
},
"t" => {
Some(true)
},
"f" => {
Some(false)
},
"v" => {
Some(true)
},
"o" => {
Some(true)
},
"faux" => {
Some(false)
},
"oui" => {
Some(true)
},
"si" => {
Some(true)
},
"non" => {
Some(false)
},
"vrai" => {
Some(true)
},
"no" => {
Some(false)
},
"yes" => {
Some(true)
},
"0" => {
Some(false)
},
"1" => {
Some(true)
},
_ => {
None
}
}
}
pub fn input_bool(message: &str) -> bool {
match try_input_bool(message) {
Some(e) => {
e
},
_ => {
false
}
}
}