Crate easy_shortcuts

Source
Expand description

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§

Macros§

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

Structs§

  • implements directory iterator over (path,metadata) created by paths
  • implements directory iterator over filenames
  • implements line iterator over a readable.

Functions§

  • get the nth argument or quit with a message.
  • get the nth command-line argument or return the default.
  • create a file for writing, quitting if not possible.
  • 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)
  • iterate over all lines from a readable. The iterator is over String (will quit if there is an i/o error)
  • open a file for reading, quitting if there’s any error.
  • open a buffered file for reading, quitting if there’s any error.
  • 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 this program, printing a message and returning a non-zero exit code.
  • a form of quit which works with the standard Error type.
  • read the contents of a file as a string, quitting otherwise
  • execute a shell command, combining stdout and stderr, and return the result as a string
  • write a String to a new file, or quit