cinner

Crates.iocinner
lib.rscinner
version0.1.2
sourcesrc
created_at2022-11-29 14:12:46.580904
updated_at2022-12-14 18:28:51.629396
descriptionC++ style std input and std output with cin and cout
homepage
repositoryhttps://github.com/CroxxN/cinner
max_upload_size
id725395
size5,420
Sarad (CroxxN)

documentation

README

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>() and println!("{}", <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++ programmer I like C++ style

Also, I wanted to learn more "advanced" Rust lmao

I learnt:

  • Operator overloading with traits (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 in generic functions

  • Variadics (they're so cool)

  • Publishing crates to crates.io

Usage

  • Add cinner = "<version-no>" to your Cargo.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.)

Commit count: 13

cargo fmt