1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//! **ergo_std**: items that could be in the standard library.
//!
//! This is the "core types" library as part of the [`ergo`] crates ecosystem. It contains useful
//! types, traits and functions for general purpose programming projects which do not fall
//! into the other [`ergo`] crates but which are boons to ergonomics and productivity.
//!
//! # How to Use
//!
//! In your `Cargo.toml`
//!
//! ```toml,no_compile
//! [dependencies]
//! ergo_std = "0.1"
//! serde = "1.0"
//! serde_derive = "1.0"
//! ```
//!
//! > You have to put the other crates in your `Cargo.toml` in order for `#[derive(...)]` to work
//! > correctly.
//!
//! ```rust
//! #[macro_use] extern crate ergo_std;
//! use ergo_std::*;
//! fn main() {
//!     /* Your code goes here */
//! }
//! ```
//!
//! # Exported Items
//!
//! The following crates and types are exported. See their docs for how to use them.
//!
//! - **[`std_prelude`]**: extends rust's `std::prelude` with commonly used types. The
//!   crate is well documented with justification and usecases for each type.
//! - **[`serde`]**: the defacto serialization library of rust. Also imports `serde_derive`
//!   so you can use `#[derive(Serialize, Deserialize)]`.
//! - **[`lazy_static!`]**: the `lazy_static!` macro is the current standard way to create
//!   global variables and constants. Warning that they are created lazily (at run time)!
//! - **[`itertools`]**: the itertools prelude provides traits that extends rust's already
//!   extensive iterator API.
//! - **[`indexmap`]**: indexable and sortable map and set types with similar performance
//!   to `std` types and beter performance when iterating.
//! - **[`maplit`]**: provides `hashmap!`, `hashset!`, `btreemap!` and `btreeset!` macros to
//!   compliment rust's existing `vec!` macro. These
//! - **[`Regex`]**: the regular expression type from the `regex` crate.
//!
//! [`ergo`]: https://github.com/rust-crates/ergo
//! [`std_prelude`]: ../std_prelude/index.html
//! [`itertools`]: ../itertools/index.html
//! [`indexmap`]: ../indexmap/index.html
//! [`lazy_static!`]: ../lazy_static/index.html
//! [`maplit`]: ../maplit/index.html
//! [`Regex`]: struct.Regex.html
//!
//! ### Special thanks
//!
//! The crates that are exported are:
//!
//! - [**serde**](https://github.com/serde-rs/serde): Serialization framework for Rust
//! - [**std_prelude**](https://github.com/vitiral/std_prelude): prelude that the rust stdlib
//!   should have always had
//! - [**lazy_static**](https://github.com/rust-lang-nursery/lazy-static.rs): A small macro for
//!   defining lazy evaluated static variables in Rust.
//! - [**itertools**](https://github.com/bluss/rust-itertools): Extra iterator adaptors, iterator
//!   methods, free functions, and macros.
//! - [**indexmap**](https://github.com/bluss/indexmap): A hash table with consistent order and
//!   fast iteration (previously named `ordermap`)
//! - [**maplit**](https://github.com/bluss/maplit): Rust container / collection literal macros for
//!   HashMap, HashSet, BTreeMap, BTreeSet.
//! - [**regex**](https://github.com/rust-lang/regex): An implementation of regular expressions for
//!   Rust. This implementation uses finite automata and guarantees linear time matching on all
//!   inputs.
//!
//! Consider supporting their development individually and starring them on github.
#![allow(unused_imports)]

#[macro_use]
pub extern crate itertools;
#[macro_use]
pub extern crate indexmap;
#[macro_use]
pub extern crate lazy_static;
#[macro_use]
pub extern crate maplit;
pub extern crate std_prelude;
pub extern crate regex;
pub extern crate serde;
#[macro_use]
pub extern crate serde_derive;

pub use std_prelude::*;
pub use lazy_static::*;
pub use itertools::Itertools;
pub use indexmap::*;
pub use maplit::*;
pub use regex::Regex;
pub use serde::*;
pub use serde_derive::*;