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

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
  • [deprecated] simple_logger - simple 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 log;
pub extern crate byteorder;
pub extern crate itertools;
pub extern crate array_tool;
pub extern crate regex;
pub extern crate url;
pub extern crate lazy_static;
pub use lazy_static::*;
pub use log::*;
pub use byteorder::*;
pub use itertools::*;
pub use array_tool::*;
pub use regex::*;
pub use url::*;

Modules

sync

Macros

debug

Logs a message at the debug level.

define_encode_set

Define a new struct that implements the EncodeSet trait, for use in percent_decode() and related functions.

error

Logs a message at the error level.

info

Logs a message at the info level.

iproduct

Create an iterator over the “cartesian product” of iterators.

izip

Create an iterator running multiple iterators in lockstep.

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.