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
//! # cuid2-timeless
//!
//! An untested, somewhat stable CUID2 generator library for rust. Built for learning more rust and I don't know how to test it.
//!
//! ## Usage
//!
//! Either use the `cuid2_timeless::cuid_wrapper()` and call it again to get ID or get some customization with `cuid2_timeless::Cuid`
//!
//! ``` rust
//! use cuid2_timeless;
//!
//! let mut cuid = cuid2_timeless::cuid_wrapper();
//! println!("{}", cuid().unwrap());
//! ```
//!
//! or some customization
//!
//! ```rust
//! use cuid2_timeless;
//! use rand::{self, Rng};
//!
//! let mut cuid = cuid2_timeless::Cuid::new(
//! Box::new( // A randomizer function
//! || {
//! rand::thread_rng().gen()
//! }
//! ),
//! Box::new( // Your very own counter function
//! |mut i| {
//! Box::new(move || {
//! i += 1;
//! i
//! })
//! }
//! ),
//! 24, // Length
//! Box::new(cuid2_timeless::utils::create_fingerprint) // And a fingerprint creator function (im too lazy to implement)
//! );
//! cuid.generate(None).unwrap();
//! ```
//!
//! or verify if it actually is `CUID`
//!
//! ```rust
//! use cuid2_timeless;
//!
//! println!("{}", cuid2_timeless::is_cuid("f9ovgvsnly7h6khwt4nx08kom".to_string(), None, None));
//! ```
//! ## Features
//!
//! - `regex` is a feature for either remove or add [`regex`] crate to the module. Turning this off will remove the [`is_cuid`] function (enabled by default)
//! - `random` is a feature for either remove or add [`rand`] crate to the module. Turning this off will remove [`Default`] trait from [`Cuid`] (enabled by default)
//! - `sha2` is a feature for either remove or add `sha2` crate to the module. Turning this off will remove SHA2 hashing algorithm, but turning this feature on will uses `sha2` for hashing (cannot enabled with `sha3` present, compiling will error if `sha2` and `sha3` is enabled, not enabled by default)
//! - `sha3` is a feature for either remove or add `sha3` crate to the module. Turning this off will remove SHA3 hashing algorithm, but turning this feature on will uses `sha3` for hashing (cannot enabled with `sha2` present, compiling will error if `sha2` and `sha3` is enabled, enabled by default)
/// Errors module that holds a bunch of [`crate::errors::Errors`] values and implementations
/// Generator module that holds [`crate::Cuid`]
/// Utilities
pub use Cuid;
pub use cuid_wrapper;
pub use is_cuid;
/// it's tests, what do you expect