numbat_codec/
lib.rs

1#![no_std]
2
3extern crate alloc;
4
5#[cfg(feature = "numbat-codec-derive")]
6pub use numbat_codec_derive;
7
8/// Reexport needed by derive.
9pub use alloc::vec::Vec;
10
11// TODO: group into smaller sub-modules
12
13mod codec_err;
14mod default_traits;
15mod impl_for_types;
16mod nested_de;
17mod nested_de_input;
18mod nested_de_input_owned;
19mod nested_de_input_slice;
20mod nested_ser;
21mod nested_ser_output;
22mod num_conv;
23pub mod test_util;
24mod top_de;
25mod top_de_input;
26mod top_ser;
27mod top_ser_output;
28mod transmute;
29mod try_static_cast;
30
31pub use crate::{
32    nested_de_input::NestedDecodeInput,
33    nested_ser_output::NestedEncodeOutput,
34    num_conv::{bytes_to_number, top_encode_number_to_output, using_encoded_number},
35    try_static_cast::{
36        try_cast_execute_or_else, try_cast_ref, try_execute_then_cast, TryStaticCast,
37    },
38};
39pub use codec_err::{DecodeError, EncodeError};
40pub use default_traits::{DecodeDefault, EncodeDefault};
41pub use nested_de::NestedDecode;
42pub use nested_de_input_owned::OwnedBytesNestedDecodeInput;
43pub use nested_de_input_slice::{dep_decode_from_byte_slice, dep_decode_from_byte_slice_or_exit};
44pub use nested_ser::{dep_encode_to_vec, NestedEncode, NestedEncodeNoErr};
45pub use top_de::{top_decode_from_nested, top_decode_from_nested_or_exit, TopDecode};
46pub use top_de_input::TopDecodeInput;
47pub use top_ser::{
48    top_encode_from_nested, top_encode_from_nested_or_exit, top_encode_no_err,
49    top_encode_to_vec_u8, TopEncode,
50};
51pub use top_ser_output::TopEncodeOutput;
52pub use transmute::{boxed_slice_into_vec, vec_into_boxed_slice};
53
54/// !INTERNAL USE ONLY!
55///
56/// This enum provides type information to optimize encoding/decoding by doing fake specialization.
57#[doc(hidden)]
58#[allow(clippy::upper_case_acronyms)]
59pub enum TypeInfo {
60    /// Default value of [`NestedEncode::TYPE_INFO`] to not require implementors to set this value in the trait.
61    Unknown,
62    U8,
63    I8,
64    U16,
65    I16,
66    U32,
67    I32,
68    USIZE,
69    ISIZE,
70    U64,
71    I64,
72    Bool,
73    Unit,
74}