This commit is contained in:
mehbark 2022-09-10 19:45:08 -04:00
commit 071dcc25e0
5 changed files with 110 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View file

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "illion"
version = "0.1.0"

8
Cargo.toml Normal file
View file

@ -0,0 +1,8 @@
[package]
name = "illion"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

0
a Normal file
View file

94
src/main.rs Normal file
View file

@ -0,0 +1,94 @@
fn main() {
println!("Hello, world!");
}
pub trait Illion: Sized {
#[must_use]
fn ten(self) -> Self;
illion! {
hundred 2
thousand 3
million 6
billion 9
trillion 12
quadrillion 15
quintillion 18
sextillion 21
septillion 24
octillion 27
nonillion 30
decillion 33
undecillion 36
duodecillion 39
tredecillion 42
quattuordecillion 45
quindecillion 48
sexdecillion 51
septemdecillion 54
octodecillion 57
novemdecillion 60
vigintillion 63
unvigintillion 66
duovigintillion 69
trevigintillion 72
quattuorvigintillion 75
quinvigintillion 78
sexvigintillion 81
septvigintillion 84
octovigintillion 87
nonvigintillion 90
trigintillion 93
untrigintillion 96
duotrigintillion 99
}
}
// A lot of these make zero sense lol
illion_impl! {
// Unsigned integers
u8: 10
u16: 10
u32: 10
u64: 10
u128: 10
usize: 10
// Signed integers
i8: 10
i16: 10
i32: 10
i64: 10
i128: 10
isize: 10
// Floats
f32: 10.0
f64: 10.0
}
#[macro_export]
macro_rules! illion {
($( $name:ident $pow:expr ) +) => {
$(
#[must_use]
fn $name(self) -> Self {
let mut result = self;
for _ in 0..$pow {
result = result.ten();
}
result
}
)+
};
}
#[macro_export]
macro_rules! illion_impl {
($( $type:ty : $ten:expr ) +) => {
$(
impl Illion for $type {
fn ten(self) -> Self {
self * $ten
}
}
)+
};
}