Crate easy_shortcuts [] [src]

Small programs which are meant to interoperate with other system commands need to quit early and return a non-zero exit code. Panicking comes across as unprofessional in such cases. This crate provides some useful shortcuts if you are writing programs that fit this 'fail hard and early' pattern.

Errors go through the quit function. You can switch the behaviour back to panicking with the EASY_DONT_QUIT_PANIC environment variable.

Functions like open and create wrap the usual io::File methods, except that they quit instead of panicking. There are functions read_to_string and write_all to read and write the contents of text files, and lines provides a straight iterator over all lines in a readable. paths provides an iterator over (PathBuf,Metadata) pairs in a directory

The or_die method is implemented for option and result types, allowing a Perl-style equivalent to the usual expect.

to_vec and to_map are trivial specializations of collect in the usual case where you do want these containers. print and debug are convenient consumers of iterators which dump out Display or Debug values.

Building up strings is a common operation; join is already defined on vectors of strings, but here it's also defined on iterators of strings. prepend collects strings with some text prepended to each value:

Examples

use easy_shortcuts::traits::*;

(0..).take(5).print("\n");

(0..5).map(|n| (n,2*n)).debug("\n");

let strs = ["one","two","three"];
let s = strs.into_iter().prepend(" -L");
assert_eq!(s," -Lone -Ltwo -Lthree");

Modules

traits

Macros

quit

quit works like try, except it quits instead of returning. The error message is output using quit_err.

Structs

DirIter

implements directory iterator over (path,metadata) created by paths

FileNameIter

implements directory iterator over filenames

LineIter

implements line iterator over a readable.

RDirIter

implements recursive directory iterator over (path,metadata) created by all_paths

Functions

all_paths

recursive iterator over all entries in a directory. Returns a tuple of (path::PathBuf,fs::Metadata); will quit if the directory does not exist or there is an i/o error)

argn_err

get the nth argument or quit with a message.

argn_or

get the nth command-line argument or return the default.

create

create a file for writing, quitting if not possible.

files

iterator over all files in a directory. Returns the files as strings; will quit if the directory does not exist or there is an i/o error)

lines

iterate over all lines from a readable. The iterator is over String (will quit if there is an i/o error)

open

open a file for reading, quitting if there's any error.

open_buffered

open a buffered file for reading, quitting if there's any error.

paths

iterator over all entries in a directory. Returns a tuple of (path::PathBuf,fs::Metadata); will quit if the directory does not exist or there is an i/o error)

quit

quit this program, printing a message and returning a non-zero exit code.

quit_err

a form of quit which works with the standard Error type.

read_to_string

read the contents of a file as a string, quitting otherwise

shell

execute a shell command, combining stdout and stderr, and return the result as a string

write_all

write a String to a new file, or quit