10 releases

0.2.1 Apr 3, 2020
0.2.0 Apr 1, 2020
0.1.9 Mar 21, 2021
0.1.8 Nov 14, 2020
0.1.5 Jun 24, 2019

#81 in #readable

Download history 722/week @ 2024-07-20 618/week @ 2024-07-27 517/week @ 2024-08-03 1012/week @ 2024-08-10 584/week @ 2024-08-17 632/week @ 2024-08-24 426/week @ 2024-08-31 516/week @ 2024-09-07 401/week @ 2024-09-14 563/week @ 2024-09-21 489/week @ 2024-09-28 244/week @ 2024-10-05 301/week @ 2024-10-12 395/week @ 2024-10-19 476/week @ 2024-10-26 508/week @ 2024-11-02

1,690 downloads per month
Used in 5 crates (2 directly)

MIT/Apache

22KB
346 lines

proconio-derive

crates.io docs.rs

This is procedural macros for proconio.


lib.rs:

Macros to easily derive Readable and make stdout faster.

proconio_derive provides two procedural macros (attributes): derive_readable and fastout.

Examples for #[derive_readable]

use proconio::input;
use proconio_derive::derive_readable;

// Unit struct can derive readable.  This generates a no-op for the reading.  Not ignoring
// the read value, but simply skip reading process.  You cannot use it to discard the input.
#[derive_readable]
#[derive(PartialEq, Debug)]
struct Weight;

#[derive_readable]
#[derive(PartialEq, Debug)]
struct Cost(i32);

#[derive_readable]
#[derive(Debug)]
struct Edge {
    from: usize,
    to: proconio::marker::Usize1, // The real Edge::to has type usize.
    weight: Weight,
    cost: Cost,
}

fn main() {
    input! {
        edge: Edge,
    }

    // if you enter "12 32 35" to the stdin, the values are as follows.
    assert_eq!(edge.from, 12);
    assert_eq!(edge.to, 31);
    assert_eq!(edge.weight, Weight);
    assert_eq!(edge.cost, Cost(35));
}

Examples for #[fastout]

use proconio_derive::fastout;

#[fastout]
fn main() {
    print!("{}{}, ", 'h', "ello"); // "hello"       (no newline)
    println!("{}!", "world");      // "world!\n"
    println!("{}", 123456789);     // "123456789\n"
}

Dependencies

~1.5MB
~37K SLoC