bitcoin_consensus_encoding/
lib.rs

1// SPDX-License-Identifier: CC0-1.0
2
3//! # Rust Bitcoin - consensus encoding and decoding
4//!
5//! This library provides traits that can be used to encode/decode objects in a
6//! consensus-consistent way.
7//!
8
9#![no_std]
10// Coding conventions.
11#![warn(missing_docs)]
12#![warn(deprecated_in_future)]
13#![doc(test(attr(warn(unused))))]
14
15#[cfg(feature = "alloc")]
16extern crate alloc;
17#[cfg(feature = "std")]
18extern crate std;
19
20mod decode;
21mod encode;
22
23#[cfg(feature = "alloc")]
24pub use self::decode::decoders::{
25    cast_to_usize_if_valid, ByteVecDecoder, ByteVecDecoderError, LengthPrefixExceedsMaxError,
26    VecDecoder, VecDecoderError,
27};
28pub use self::decode::decoders::{
29    ArrayDecoder, CompactSizeDecoder, CompactSizeDecoderError, Decoder2, Decoder2Error, Decoder3,
30    Decoder3Error, Decoder4, Decoder4Error, Decoder6, Decoder6Error, UnexpectedEofError,
31};
32#[cfg(feature = "std")]
33pub use self::decode::{
34    decode_from_read, decode_from_read_unbuffered, decode_from_read_unbuffered_with, ReadError,
35};
36pub use self::decode::{decode_from_slice, Decodable, Decoder};
37#[cfg(feature = "alloc")]
38pub use self::encode::encode_to_vec;
39#[cfg(feature = "std")]
40pub use self::encode::encode_to_writer;
41pub use self::encode::encoders::{
42    ArrayEncoder, BytesEncoder, CompactSizeEncoder, Encoder2, Encoder3, Encoder4, Encoder6,
43    SliceEncoder,
44};
45pub use self::encode::{Encodable, Encoder};