initial commit
commit
3ed234eab3
@ -0,0 +1,2 @@
|
||||
/target
|
||||
.Cargo.lock
|
@ -0,0 +1,34 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
|
||||
dependencies = [
|
||||
"instant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "instant"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "roll"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
]
|
@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "roll"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
fastrand = "1.8.0"
|
@ -0,0 +1,41 @@
|
||||
use std::io::{Write};
|
||||
use std::{env, io};
|
||||
use std::process::exit;
|
||||
|
||||
fn main() -> Result<(), io::Error> {
|
||||
let args = env::args().collect::<Vec<String>>();
|
||||
let name = &String::from("roll");
|
||||
let name = args.first().unwrap_or(name);
|
||||
if args.len() < 2 {
|
||||
eprintln!("Usage: {name} [dice...]\n{}",
|
||||
"\t Dice should be formatted [rolls]d[sides], e.g. 1d5, 5d6...");
|
||||
exit(1);
|
||||
}
|
||||
let args: Vec<Vec<u32>> = args
|
||||
.iter()
|
||||
.skip(1)
|
||||
.map(|x| x
|
||||
.split('d')
|
||||
.map(|y| y
|
||||
.parse::<u32>()
|
||||
.unwrap_or_else(|_| {
|
||||
eprintln!("{name}: {x}: {}",
|
||||
"Improperly formatted die (should be [rolls]d[sides]).");
|
||||
exit(1);
|
||||
})).collect())
|
||||
.collect();
|
||||
|
||||
for arg in args {
|
||||
let rolls = *arg.first().unwrap();
|
||||
let sides = *arg.last().unwrap();
|
||||
|
||||
let stdout = io::stdout();
|
||||
let mut lock = stdout.lock();
|
||||
for _ in 0..rolls {
|
||||
let num = fastrand::u32(1..=sides);
|
||||
writeln!(lock, "{}", num);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue