initial commit

master
Lilith 5 months ago
commit 3ed234eab3

2
.gitignore vendored

@ -0,0 +1,2 @@
/target
.Cargo.lock

34
Cargo.lock generated

@ -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…
Cancel
Save