kago 0.5.0

A crate for custom-width signed and unsigned integers.
Documentation
//! # Kago(籠)
//!
//! 「不確定なことを恐れて動けなくなる。だったら自らコントロールすればいいんだ」(旅人より村人へ)
//!
//! **Kago** は、Rust において任意ビット幅の整数型(1〜128ビット)を柔軟に扱うためのクレート。
//!
//! プリミティブな整数型(例:`u8`, `i32`, `u128`)をラップし、任意のビット幅を持つ符号付き・符号なし整数型を定義できる。
//! たとえば 9 ビットや 17 ビットといった非標準のサイズの整数を、安全かつ明示的に表現・操作することが可能。
//!
//! このクレートは手続きマクロによって定義を自動生成しており、詳細は `kago-macros` クレートを参照。
//!
//! ## 特徴
//! - **任意ビット幅対応**:1〜128ビットの範囲でビット幅を自由に指定可能
//! - **符号の有無を選択可能**:符号付き(`IN`)および符号なし(`UN`)をサポート
//! - **`num-traits` との互換性**:`PrimInt` トレイトを実装しており、汎用的な数値処理に対応
//!
//! ## 注意点
//! 内部的には、指定されたビット幅をプリミティブ型にラップして実現しており、上位ビットを使用する設計となっている。
//! そのため、たとえば 9 ビットの整数型であっても、`u16` などより大きなメモリ領域を消費する可能性がある。
//! ビット単位での高密度な圧縮や最小メモリ使用を重視する用途には適さない。
//!
//! ## 名前の由来
//! 「Kago(籠)」は、データをちょうどよく包み込む“入れ物”としての性質に由来している。
//!
//! ## 想定される用途
//! 形式検証、DSL(ドメイン固有言語)の実装、シリアライザ/デシリアライザの構築など、
//! メモリ効率よりも、ビット幅に意味的な厳密さが求められる場面での利用を想定している。

#![warn(
    missing_docs,
    rustdoc::missing_crate_level_docs,
    unused_results,
    clippy::complexity,
    clippy::perf,
    clippy::style
)]
#![deny(clippy::correctness, clippy::suspicious)]

use kago_macros::*;

limited_bits!();
impl_from!();

#[cfg(feature = "ougi_impl")]
pub use ougi::{BitDouble, BitHalf};
#[cfg(feature = "ougi_impl")]
impl_ougi!();

/// 変換エラー
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ConvertError;

#[cfg(test)]
mod tests;