Crate shkeleton[][src]

Shkeleton is a skeleton Rust project which defines some default dependencies and contains some common API's. The idea behind Shkeleton is that you don't need to update all the dependencies by hand for every your library or binary, you could just update Shkeleton version and get all updates.

Dependencies

  • log - logging facade
  • byteorder - dealing with data reading/writing
  • lazy_static - macro to define a lazy static constants
  • array_tool - utilities for dealing with arrays
  • itertools - utilities for dealing with iterators
  • regex - regular expressions
  • url - handling URLs
  • derive_more & derive_deref - more derive implementations
  • failure - error handling

Features

Shkeleton also defines a few features which extend the dependencies list and APIs.

CLI feature

Additional dependencies:

  • clap - define your command line arguments parser
  • fern - complex logger implementation
  • glob - dealing with glob patterns

Concurrency feature

Additional dependencies:

  • scoped-pool - define and use a thread pool
  • num_cpus - get the number of CPUs and cores available
  • parking_lot - faster syncronization primitives Concurrency feature also defines a facade for RwLock, which allowes to hide an implementation (std::sync::RwLock or parking_lot::RwLock) behind this facade and switch implementation without the need to update sources. It could be valuable because the parking_lot implementation lacks "lock poisoning" and maybe harder to debug deadlocks.

Limitations

Due to current Rust macro system limitations in order to use derive macros from the derive_deref or derive_more crates you need to import them manually:

This example is not tested
#[macro_use]
extern crate derive_more;
#[macro_use]
extern crate derive_deref;

Re-exports

pub extern crate lazy_static;
pub extern crate log;
pub extern crate failure;

Modules

sync

Macros

bail

Exits a function early with an Error.

debug

Logs a message at the debug level.

ensure

Exits a function early with an Error if the condition is not satisfied.

error

Logs a message at the error level.

format_err

Constructs an Error using the standard string interpolation syntax.

info

Logs a message at the info level.

lazy_static
log

The standard logging macro.

log_enabled

Determines if a message logged at the specified level in that module will be logged.

trace

Logs a message at the trace level.

warn

Logs a message at the warn level.