create_input_reader

Function create_input_reader 

Source
pub fn create_input_reader<P: AsRef<Path>>(
    ident: Option<P>,
) -> Result<Box<dyn BufRead>>
Expand description

Creates a reader from a string identifier. Both None and Some("-") mean stdin.

§Example

use cli_utils_hoijui::create_input_reader;


let in_file = None as Option<&str>; // reads from stdin
let mut reader = create_input_reader(in_file)?;

let in_file = None as Option<&String>; // reads from stdin
let mut reader = create_input_reader(in_file)?;

let in_file = Some("-"); // reads from stdin
let mut reader = create_input_reader(in_file)?;

let in_file = Some("my_dir/my_file.txt"); // reads from file "$CWD/my_dir/my_file.txt"
let mut reader = create_input_reader(in_file)?;

let in_file = Some("my_dir/my_file.txt".to_string()); // reads from file "$CWD/my_dir/my_file.txt"
let mut reader = create_input_reader(in_file)?;

let path_buf = PathBuf::from_str("my_dir/my_file.txt").expect("This failing should be impossible!");
let in_file = Some(path_buf.as_path()); // reads from file "$CWD/my_dir/my_file.txt"
let mut reader = create_input_reader(in_file)?;

let in_file = Some(path_buf); // reads from file "$CWD/my_dir/my_file.txt"
let mut reader = create_input_reader(in_file)?;

let mut buffer = String::new();
loop {
    let line_size = reader.read_line(&mut buffer)?;
    if line_size == 0 {
        break;
    }
    print!("{}", buffer);
}

§Errors

If a file path is specified, and it is not possible to read from it.