3 releases
0.1.2 | Dec 14, 2022 |
---|---|
0.1.1 | Nov 30, 2022 |
0.1.0 | Nov 29, 2022 |
#87 in #cpp
Used in file_filler
4KB
Cinner (pronounced "Sinner") is an utility to write I/O operation in C++ style
It features C++ like style for cin
and cout
Why?
-
Because I'm bored of writing
std::io::stdin().read_line(&mut holder).trim().parse::<T>()
andprintln!("{}", <variable>)
all the time -
Because I didn't find any other library that does this
-
Because I didn't have anything to do
-
Because
I'm a C++ programmerI like C++ style
Also, I wanted to learn more "advanced" Rust lmao
I learnt:
-
Operator overloading
withtraits
(I'm still not sure if I did it right) -
The importance of
.trim()
(I forgot to add it in the first version and it took >5hrs to find the bug) -
Using
trait bounds
ingeneric functions
-
Variadics
(they're so cool) -
Publishing crates to
crates.io
Usage
- Add
cinner = "<version-no>"
to yourCargo.toml
file
You can use:
use cinner::{cin, cout};
fn main(){
let mut i = 0;
let _ = cin >> &mut i;
let _ = cout << i << "\n";
}
As opposed to:
fn main(){
let mut holder = String::new();
let i = std::io::stdin().read_line(&mut holder).trim().parse::<i32>().unwrap();
println!("{}", i);
}
Also it's recursive, so you can do:
use cinner::{cin, cout};
fn main(){
let mut i = 0;
let mut j = 0_f32;
let _ = cin >> &mut i >> &mut j;
let _ = cout << i << "\n";
}
If you have any suggestions, DCDA
Updates
- Cinner now supports "endl" functionality
© 2022 Sarad (Chronos Ltd.)