13 releases

✓ Uses Rust 2018 edition

0.1.8 Jan 14, 2020
0.1.7 Jan 12, 2018
0.1.6 Feb 17, 2017
0.1.5 May 11, 2016
0.1.0 May 12, 2015

#2 in #read

Download history 543/week @ 2019-10-15 1308/week @ 2019-10-22 864/week @ 2019-10-29 1045/week @ 2019-11-05 806/week @ 2019-11-12 1056/week @ 2019-11-19 777/week @ 2019-11-26 946/week @ 2019-12-03 1247/week @ 2019-12-10 1438/week @ 2019-12-17 960/week @ 2019-12-24 1705/week @ 2019-12-31 2604/week @ 2020-01-07 2411/week @ 2020-01-14 1933/week @ 2020-01-21

5,090 downloads per month
Used in 24 crates (23 directly)

Custom license

11KB
166 lines

Build Status Latest Version Clippy Linting Result

You can use either the read! macro to read a single value and return it, or the scan! macro to read one or more values into variables. Both macros can also read from a file or from memory. The read! macro can take any type that implements Iterator<Item=u8> as an optional third argument, and the scan! macro's arguments can be prefixed with iter => where iter implements Iterator<Item=u8>.

Examples

scan! macro

use text_io::scan;

// reading from a string source
let i: i32;
scan!("<b>12</b>".bytes() => "<b>{}</b>", i);
assert_eq!(i, 12);

// reading multiple values from stdio
let a: i32;
let b: &mut u8 = &mut 5;
scan!("{}, {}", a, *b);

read! macro

use text_io::read;

// read until a whitespace and try to convert what was read into an i32
let i: i32 = read!();

// read until a whitespace (but not including it)
let word: String = read!(); // same as read!("{}")

// read until a newline (but not including it)
let line: String = read!("{}\n");

// expect the input "<b><i>" or panic
// read until the next "<" and return that.
// expect the input "/i></b>"
let stuff: String = read!("<b><i>{}</i></b>");

// reading from files
use std::io::Read;
let mut file = std::fs::File::open("tests/answer.txt").unwrap().bytes().map(|ch| ch.unwrap());
let val: i32 = read!("The answer is {}!!!11einself\n", file);

// reading from strings
let val: i32 = read!("Number: {}", "Number: 99".bytes());

No runtime deps