shkeleton/
lib.rs

1//! Shkeleton is a skeleton Rust project which defines some default dependencies and contains some
2//! common API's.
3//! The idea behind Shkeleton is that you don't need to update all the dependencies by hand for
4//! every your library or binary, you could just update Shkeleton version and get all updates.
5//! ## Dependencies
6//! * log - logging facade
7//! * byteorder - dealing with data reading/writing
8//! * lazy_static - macro to define a lazy static constants
9//! * array_tool - utilities for dealing with arrays
10//! * itertools - utilities for dealing with iterators
11//! * iterator-ext - extension for iterators
12//! * regex - regular expressions
13//! * lazy-regex - regular expressions macros
14//! * url - handling URLs
15//! * percent_encoding - URL encoding
16//! * derive_more & derive_deref - more derive implementations
17//! * chrono - dealing with time and date
18//! * fstrings - string interpolation macros
19//! * sherr - error signalling and logger helpers
20//! * log - logging API (through sherr)
21//! * anyhow - flexible error signalling (through sherr)
22//! * backtrace - backtrace routines (through sherr)
23//!
24//! ## Features
25//! Shkeleton also defines a few features which extend the dependencies list and APIs.
26//!
27//! ### cli
28//! Additional dependencies:
29//! * clap - define your command line arguments parser
30//! * glob - dealing with glob patterns
31//! * dirs - dealing with system paths
32//! * fern - logging implementation (through sherr)
33//!
34//! ### concurrency
35//! Additional dependencies:
36//! * crossbeam - multi-threading utils
37//! * num_cpus - get the number of CPUs and cores available
38//! * parking_lot - faster synchronization primitives
39//! Concurrency feature also defines a facade for RwLock, which allows to hide an implementation
40//! (std::sync::RwLock or parking_lot::RwLock) behind this facade and switch implementation without
41//! need to update sources.
42//!
43//! ### deadlock_detection
44//! Enables parking_lot deadlock_detection feature.
45
46pub mod sync;
47
48#[doc(hidden)]
49pub use array_tool;
50#[doc(hidden)]
51pub use byteorder;
52#[doc(hidden)]
53pub use chrono;
54#[doc(hidden)]
55pub use derive_deref;
56#[doc(hidden)]
57pub use derive_more;
58#[doc(hidden)]
59pub use fstrings;
60#[doc(hidden)]
61pub use itertools;
62#[doc(hidden)]
63pub use lazy_static;
64#[doc(hidden)]
65pub use percent_encoding;
66#[doc(hidden)]
67pub use regex;
68#[doc(hidden)]
69pub use lazy_regex;
70#[doc(hidden)]
71pub use sherr;
72#[doc(hidden)]
73pub use url;
74#[doc(hidden)]
75pub use iterator_ext;
76
77#[cfg(feature = "cli")]
78#[doc(hidden)]
79pub use clap;
80#[cfg(feature = "cli")]
81#[doc(hidden)]
82pub use dirs;
83#[cfg(feature = "cli")]
84#[doc(hidden)]
85pub use glob;
86
87#[cfg(feature = "concurrency")]
88#[doc(hidden)]
89pub use crossbeam;
90#[cfg(feature = "concurrency")]
91#[doc(hidden)]
92pub use num_cpus;
93#[cfg(feature = "concurrency")]
94#[doc(hidden)]
95pub use parking_lot;