2 releases

0.1.1 Nov 3, 2019
0.1.0 Nov 3, 2019

#1279 in Filesystem

47 downloads per month

MIT license

10KB
125 lines

buffers

Collection of unified buffers from stdio, file and memory buffers.

The buffers crate unifies standard IO, memory and file buffers into a unified type, allowing to effectively leave the type of buffer used to the user.

How to use

The buffers crate exposes three types; one for input, one for output, and one for duplex in/out operations. For convenience, each type has a from_arg constructor that takes in the output of a commandline parser (such as clap) and returns the buffer of the appropriate type (see the function docs for more details).

IO Read/Write traits are implemented for the types meaning you can use those wrapper types as a drop-in replacement of "regular" buffers.

Example

use clap::{App, Arg};
use buffers::{Input, Output};

let matches = App::new("app")
    .arg(Arg::with_name("input").index(1))
    .arg(Arg::with_name("output").index(2))
    .get_matches();
let mut input_buf = Input::from_arg(matches.value_of("input"));
let mut output_buf = Output::from_arg(matches.value_of("output"));
parse_input(&mut input_buf).and_then(|ast| transpile(ast, &mut output_buf));

No runtime deps