1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! # Ougi (扇)
//!
//! 「開けば広がり、閉じれば狭まる」(扇絵師の独り言)
//!
//! **Ougi** は、数値型においてビット数を倍化・半化することができるトレイトを実装したクレート。
//!
//! ## 特徴
//! - **プリミティブ型に完全に対応**: プリミティブな数値型に対して、ビット数を倍化・半化するトレイトが実装済み
//! - **カスタム型に対応**: `BitDouble` トレイトや `BitHalf` トレイトなどを実装することで、カスタム型にも対応可能
//! - **`kago` との互換性**: 任意のビット幅整数型を扱う `kago` クレートと組み合わせて使用することが可能
//!
//! ## 注意点
//! 基本的には関連型が実装されているのみで、内部的には単なる `From`/`Into` や `TryFrom`/`TryInto` の呼び出し。
//! よって、どのように倍加・半化されるかは、それらの実装に依存する。
//! また、半化の場合は、情報が失われる可能性が高い。
//!
//! ### feature ごとの注意点
//! - `f64_to_f32` フィーチャーを有効にすると、`f64` 型から `f32` 型への変換が可能になる。
//! これは、 `num-traits` クレートの `ToPrimitive` トレイトを利用している。
//!
//! ## 名前の由来
//! 「Ougi (扇)」は、データを広げたり閉じたりすることができる“扇”としての性質に由来している。
//!
//! ## 想定される用途
//! 数値型を扱う際に、トレイト境界を利用した関数などの実装において、
//! ビット数を柔軟に変更したい場合に利用されることを想定している。
/// ビット数を倍加するトレイト
/// ビット数を半化するトレイト