kago

Crates.iokago
lib.rskago
version
sourcesrc
created_at2025-03-27 14:12:45.225299+00
updated_at2025-04-10 04:34:49.349365+00
descriptionA crate for custom-width signed and unsigned integers.
homepage
repository
max_upload_size
id1607989
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
ShizukaKokoro (ShizukaKokoro)

documentation

README

Kago(籠)

「不確定なことを恐れて動けなくなる。だったら自らコントロールすればいいんだ」(旅人より村人へ)

Kago は、Rust において任意ビット幅の整数型(1〜128ビット)を柔軟に扱うためのクレート。

プリミティブな整数型(例:u8, i32, u128)をラップし、任意のビット幅を持つ符号付き・符号なし整数型を定義で。 たとえば 9 ビットや 17 ビットといった非標準のサイズの整数を、安全かつ明示的に表現・操作することが可能。

このクレートは手続きマクロによって定義を自動生成しており、詳細は kago-macros クレートを参照。

特徴

  • 任意ビット幅対応:1〜128ビットの範囲でビット幅を自由に指定可能
  • 符号の有無を選択可能:符号付き(IN)および符号なし(UN)をサポート
  • num-traits との互換性PrimInt トレイトを実装しており、汎用的な数値処理に対応

注意点

内部的には、指定されたビット幅をプリミティブ型にラップして実現しており、上位ビットを使用する設計となっている。 そのため、たとえば 9 ビットの整数型であっても、u16 などより大きなメモリ領域を消費する可能性がある。 ビット単位での高密度な圧縮や最小メモリ使用を重視する用途には適さない。

名前の由来

「Kago(籠)」は、データをちょうどよく包み込む“入れ物”としての性質に由来している。

想定される用途

形式検証、DSL(ドメイン固有言語)の実装、シリアライザ/デシリアライザの構築など、 メモリ効率よりも、ビット幅に意味的な厳密さが求められる場面での利用を想定している。

変更履歴

0.1.0(2025-03-27) deprecated

  • 1~128ビットの整数型(符号なし・符号付き)を実装

0.2.0(2025-03-28) deprecated

  • README を追加
  • Binary/Octal/LowerHex/UpperHex を実装

0.2.1(2025-03-28) deprecated

  • シフト演算を修正

0.2.2(2025-03-28)

  • プリミティブ型への変換を修正

0.3.0(2025-04-06)

  • WrappingAdd/WrappingSub を実装
  • Octal/LowerHex/UpperHex を削除(仕様が不明瞭なため)

0.4.0(2025-04-10)

  • 同じビット幅の型同士の変換を実装
  • 符号付き整数型同士、符号なし整数型同士の変換を実装

0.5.0(2025-04-10)

  • ougi のトレイトを利用できるように(feature ougi を追加)
Commit count: 0

cargo fmt