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
/*! `bitvec` symbol export

This module collects the general public API into a single spot for inclusion, as
`use bitvec::prelude::*;`, without polluting the root namespace of the crate.

The prelude has a number of submodules, which can be used to limit the symbols
imported.

The `base` module (`use bitvec::prelude::base::*;`) imports only the data types
and macros needed to make direct use of the crate. It also imports trait
*methods* from `BitField` and `BitView`, without importing those trait names.

The `macros` module imports only the constructor macros.

The `traits` module imports the names of all traits in the crate.

The `types` module imports all data types in the crate.

You may alternatively wish to import the crate root, or this prelude, under a
shorter name, without bringing any other items into scope. The import statements

```rust,ignore
use bitvec as bv;
//  or
use bitvec::prelude as bv;
```

will make the crate symbols available under the `bv` namespace instead of the
longer `bitvec`. The prelude contains all the major public symbols of the crate
directly, while the crate root does not reëxport the items in its submodules.
Use whichever path root you prefer: crate for full paths, and prelude for
shortcuts.
!*/

/// The base symbols, containing only the minimum needed to use the crate.
pub mod base {
	pub use super::{
		macros::*,
		trait_methods::*,
	};

	pub use crate::{
		array::BitArray,
		order::{
			LocalBits,
			Lsb0,
			Msb0,
		},
		slice::BitSlice,
	};

	#[cfg(feature = "alloc")]
	pub use crate::{
		boxed::BitBox,
		vec::BitVec,
	};
}

/// Macros available for default export.
pub mod macros {
	pub use crate::{
		bitarr,
		bits,
	};

	#[cfg(feature = "alloc")]
	pub use crate::{
		bitbox,
		bitvec,
	};
}

/// Traits available for default export.
pub mod traits {
	pub use crate::{
		field::BitField,
		mem::BitMemory,
		order::BitOrder,
		store::BitStore,
		view::BitView,
	};
}

/// Imports trait methods without importing the traits themselves.
pub mod trait_methods {
	pub use crate::{
		field::BitField as _,
		view::BitView as _,
	};
}

/// Datatypes available for default export.
pub mod types {
	pub use crate::{
		array::BitArray,
		domain::{
			BitDomain,
			BitDomainMut,
		},
		order::{
			LocalBits,
			Lsb0,
			Msb0,
		},
		slice::BitSlice,
	};

	#[cfg(feature = "alloc")]
	pub use crate::{
		boxed::BitBox,
		vec::BitVec,
	};
}

pub use macros::*;
pub use traits::*;
pub use types::*;