Skip to main content

qubit_codec/
lib.rs

1// =============================================================================
2//    Copyright (c) 2026 Haixing Hu.
3//
4//    SPDX-License-Identifier: Apache-2.0
5//
6//    Licensed under the Apache License, Version 2.0.
7// =============================================================================
8//! # qubit-codec
9//!
10//! Core codec traits and buffer conversion primitives for Rust applications.
11//!
12//! This crate contains only domain-neutral building blocks such as value
13//! codecs, owned value encoder/decoder helpers, byte-order markers, and
14//! progress-oriented buffer transcoders. The only I/O-facing types are the
15//! low-level `qubit_io::Input`/`qubit_io::Output` bridges used by downstream
16//! stream crates. Concrete binary, text, misc, and `std::io` adapters live in
17//! sibling crates.
18
19#![deny(missing_docs)]
20#![deny(unsafe_op_in_unsafe_fn)]
21
22mod byte_order;
23mod codec;
24mod transcode;
25mod value;
26
27pub use byte_order::{
28    BigEndian,
29    ByteOrder,
30    ByteOrderSpec,
31    LittleEndian,
32};
33pub use codec::{
34    Codec,
35    CodecConvertError,
36    CodecDecodeError,
37    CodecDecodeErrorSignal,
38    CodecEncodeError,
39};
40pub use qubit_io::nz;
41pub use transcode::{
42    CapacityError,
43    CodecTranscodeConverter,
44    CodecTranscodeDecoder,
45    CodecTranscodeEncoder,
46    DecodeAction,
47    DecodeContext,
48    EncodeContext,
49    EncodePlan,
50    TranscodeConvertEngine,
51    TranscodeConvertHooks,
52    TranscodeConverter,
53    TranscodeDecodeEngine,
54    TranscodeDecodeHooks,
55    TranscodeDecodeInput,
56    TranscodeDecoder,
57    TranscodeEncodeEngine,
58    TranscodeEncodeHooks,
59    TranscodeEncodeOutput,
60    TranscodeEncoder,
61    TranscodeError,
62    TranscodeProgress,
63    TranscodeStatus,
64    Transcoder,
65};
66pub use value::{
67    CodecValueDecoder,
68    CodecValueEncoder,
69    CodecValueExt,
70    ValueDecoder,
71    ValueEncoder,
72};