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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//! Battery box, a library containing common stuff
//!
//! Check out [prelude] which is supposed to be used like `use batbox::prelude::*`
//! A lot of reexports of std and other [crates].
#![warn(missing_docs)]

pub mod crates {
    //! External crates

    pub use ::anyhow;
    pub use ::async_recursion;
    pub use ::async_trait;
    pub use ::bincode;
    pub use ::derivative;
    pub use ::derive_more;
    pub use ::dyn_clone;
    pub use ::futures;
    pub use ::itertools;
    pub use ::log;
    pub use ::maplit;
    pub use ::once_cell;
    pub use ::pin_utils;
    pub use ::ron;
    pub use ::serde;
    pub use ::serde_json;
    pub use ::thiserror;
    pub use ::toml;

    #[cfg(target_os = "android")]
    pub use ::batbox_android as android;
    pub use ::batbox_approx as approx;
    pub use ::batbox_cli as cli;
    pub use ::batbox_cmp as cmp;
    pub use ::batbox_collection as collection;
    pub use ::batbox_color as color;
    pub use ::batbox_diff as diff;
    pub use ::batbox_file as file;
    pub use ::batbox_file_dialog as file_dialog;
    pub use ::batbox_i18n as i18n;
    pub use ::batbox_la as la;
    pub use ::batbox_lapp as lapp;
    pub use ::batbox_logger as logger;
    pub use ::batbox_num as num;
    pub use ::batbox_preferences as preferences;
    pub use ::batbox_range as range;
    pub use ::batbox_time as time;
    pub use ::batbox_tuple_macros as tuple_macros;
}

#[doc(no_inline)]
pub use crates::*;

pub mod prelude {
    //! Items intended to always be available
    //!
    //! ```
    //! use batbox::prelude::*;
    //! ```

    #[doc(no_inline)]
    pub use crate::crates::*;

    #[doc(no_inline)]
    pub use crate::crates::anyhow::{anyhow, Context as _};
    #[doc(no_inline)]
    pub use crate::crates::async_recursion::async_recursion;
    #[doc(no_inline)]
    pub use crate::crates::async_trait::async_trait;
    #[doc(no_inline)]
    pub use crate::crates::derivative::Derivative;
    #[doc(no_inline)]
    pub use crate::crates::derive_more::{Constructor, Deref, DerefMut};
    #[doc(no_inline)]
    pub use crate::crates::dyn_clone::{clone_box, DynClone};
    #[doc(no_inline)]
    pub use crate::crates::futures::prelude::*;
    #[doc(no_inline)]
    pub use crate::crates::itertools::izip;
    #[doc(no_inline)]
    pub use crate::crates::maplit::{btreemap, btreeset, hashmap, hashset};
    #[doc(no_inline)]
    pub use crate::crates::pin_utils::pin_mut;
    #[doc(no_inline)]
    pub use crate::crates::serde::{de::DeserializeOwned, Deserialize, Serialize};
    #[doc(no_inline)]
    pub use crate::crates::serde_json;
    #[doc(no_inline)]
    pub use ::std::{
        cell::{Cell, Ref, RefCell, RefMut},
        collections::{HashMap, HashSet},
        convert::{TryFrom, TryInto},
        fmt::{self, Debug, Display},
        hash::Hash,
        io::{BufRead, Read, Write},
        marker::PhantomData,
        mem,
        ops::{
            Add, AddAssign, Deref, DerefMut, Div, DivAssign, Index, IndexMut, Mul, MulAssign, Neg,
            Rem, RemAssign, Sub, SubAssign,
        },
        os::raw::{c_char, c_double, c_float, c_int, c_long, c_short, c_ulong, c_ushort, c_void},
        pin::Pin,
        rc::Rc,
        sync::{Arc, Mutex},
    };

    #[cfg(target_os = "android")]
    #[doc(no_inline)]
    pub use crate::crates::android;
    #[doc(no_inline)]
    pub use crate::crates::approx::*;
    #[doc(no_inline)]
    pub use crate::crates::cli::prelude::*;
    #[doc(no_inline)]
    pub use crate::crates::cmp::*;
    #[doc(no_inline)]
    pub use crate::crates::collection::*;
    #[doc(no_inline)]
    pub use crate::crates::color::*;
    #[doc(no_inline)]
    pub use crate::crates::diff::*;
    #[doc(no_inline)]
    pub use crate::crates::la::*;
    #[doc(no_inline)]
    pub use crate::crates::lapp::*;
    #[doc(no_inline)]
    pub use crate::crates::num::*;
    #[doc(no_inline)]
    pub use crate::crates::range::*;
    #[doc(no_inline)]
    pub use crate::crates::time::Timer;
    #[doc(no_inline)]
    pub use crate::crates::tuple_macros::*;

    #[doc(no_inline)]
    pub use crate::rng::*;
    #[doc(no_inline)]
    pub use crate::util::*;
}

use prelude::*;

// Unsorted into own crates
pub mod rng;
pub mod util;