1#![deny(unreachable_pub)]
7#![deny(unsafe_code)]
8#![deny(unused_crate_dependencies)]
9#![warn(clippy::cast_lossless)]
11#![warn(clippy::cast_possible_truncation)]
13#![warn(clippy::cast_possible_wrap)]
14#![warn(clippy::cast_precision_loss)]
15#![warn(clippy::cast_ptr_alignment)]
16#![warn(clippy::clone_on_ref_ptr)]
17#![warn(clippy::cloned_instead_of_copied)]
18#![warn(clippy::unreadable_literal)]
19#![warn(clippy::doc_markdown)]
20#![warn(clippy::semicolon_if_nothing_returned)]
21#![warn(clippy::return_self_not_must_use)]
22#![warn(clippy::match_same_arms)]
23#![warn(clippy::missing_errors_doc)]
24#![warn(clippy::items_after_statements)]
25#![warn(clippy::manual_string_new)]
26#![warn(clippy::wildcard_imports)]
27#![warn(clippy::explicit_iter_loop)]
28#![warn(clippy::bool_to_int_with_if)]
29#![warn(clippy::must_use_candidate)]
30#![allow(clippy::cast_possible_wrap)]
31#![allow(clippy::cast_sign_loss)]
32#![allow(clippy::cast_lossless)]
33#![allow(clippy::enum_glob_use)] #![allow(clippy::needless_continue)] #![allow(clippy::redundant_else)] #![allow(clippy::missing_panics_doc)] #![allow(clippy::unnecessary_wraps)] #![allow(clippy::explicit_deref_methods)] #![allow(clippy::too_many_lines)] pub mod bitselect;
42pub mod charset;
43pub mod collections;
44pub mod instruction;
45mod onescomplement;
46pub mod prelude;
47pub mod quarters;
48pub mod splay;
49pub mod subword;
50mod types;
51pub use onescomplement::error;
52pub use onescomplement::unsigned::*;
53
54#[macro_export]
55macro_rules! u36 {
56 ($n:expr_2021) => {
57 $crate::prelude::Unsigned36Bit::new::<{ $n }>()
58 };
59}
60
61#[macro_export]
62macro_rules! u18 {
63 ($n:expr_2021) => {
64 $crate::prelude::Unsigned18Bit::new::<{ $n }>()
65 };
66}
67
68#[macro_export]
69macro_rules! u5 {
70 ($n:expr_2021) => {
71 $crate::prelude::Unsigned5Bit::new::<{ $n }>()
72 };
73}
74
75#[macro_export]
76macro_rules! u6 {
77 ($n:expr_2021) => {
78 $crate::prelude::Unsigned6Bit::new::<{ $n }>()
79 };
80}
81
82#[macro_export]
83macro_rules! u9 {
84 ($n:expr_2021) => {
85 $crate::prelude::Unsigned9Bit::new::<{ $n }>()
86 };
87}
88
89#[test]
90fn test_u36() {
91 use prelude::Unsigned36Bit;
92 let m: Unsigned36Bit = u36!(40_u64);
93 let n: Unsigned36Bit = Unsigned36Bit::from(40_u32);
94 assert_eq!(m, n);
95
96 let p: Unsigned36Bit = u36!(1u64 << 34);
97 let q: Unsigned36Bit =
98 Unsigned36Bit::try_from(1u64 << 34).expect("test data should be in range");
99 assert_eq!(p, q);
100}
101
102#[test]
103fn test_u18() {
104 use prelude::Unsigned18Bit;
105 let p: Unsigned18Bit = u18!(1 << 17);
106 let q: Unsigned18Bit =
107 Unsigned18Bit::try_from(1u32 << 17).expect("test data should be in range");
108 assert_eq!(p, q);
109}
110
111#[test]
112fn test_u5() {
113 assert_eq!(u5!(0o00), Unsigned5Bit::try_from(0o00_u8).unwrap());
114 assert_eq!(u5!(0o01), Unsigned5Bit::try_from(0o01_u8).unwrap());
115 assert_eq!(u5!(0o02), Unsigned5Bit::try_from(0o02_u8).unwrap());
116 assert_eq!(u5!(0o03), Unsigned5Bit::try_from(0o03_u8).unwrap());
117 assert_eq!(u5!(0o04), Unsigned5Bit::try_from(0o04_u8).unwrap());
118 assert_eq!(u5!(0o04), Unsigned5Bit::try_from(0o04_u8).unwrap());
119 assert_eq!(u5!(0o05), Unsigned5Bit::try_from(0o05_u8).unwrap());
120 assert_eq!(u5!(0o06), Unsigned5Bit::try_from(0o06_u8).unwrap());
121 assert_eq!(u5!(0o07), Unsigned5Bit::try_from(0o07_u8).unwrap());
122
123 assert_eq!(u5!(0o10), Unsigned5Bit::try_from(0o10_u8).unwrap());
124 assert_eq!(u5!(0o11), Unsigned5Bit::try_from(0o11_u8).unwrap());
125 assert_eq!(u5!(0o12), Unsigned5Bit::try_from(0o12_u8).unwrap());
126 assert_eq!(u5!(0o13), Unsigned5Bit::try_from(0o13_u8).unwrap());
127 assert_eq!(u5!(0o14), Unsigned5Bit::try_from(0o14_u8).unwrap());
128 assert_eq!(u5!(0o14), Unsigned5Bit::try_from(0o14_u8).unwrap());
129 assert_eq!(u5!(0o15), Unsigned5Bit::try_from(0o15_u8).unwrap());
130 assert_eq!(u5!(0o16), Unsigned5Bit::try_from(0o16_u8).unwrap());
131 assert_eq!(u5!(0o17), Unsigned5Bit::try_from(0o17_u8).unwrap());
132
133 assert_eq!(u5!(0o20), Unsigned5Bit::try_from(0o20_u8).unwrap());
134 assert_eq!(u5!(0o21), Unsigned5Bit::try_from(0o21_u8).unwrap());
135 assert_eq!(u5!(0o22), Unsigned5Bit::try_from(0o22_u8).unwrap());
136 assert_eq!(u5!(0o23), Unsigned5Bit::try_from(0o23_u8).unwrap());
137 assert_eq!(u5!(0o24), Unsigned5Bit::try_from(0o24_u8).unwrap());
138 assert_eq!(u5!(0o24), Unsigned5Bit::try_from(0o24_u8).unwrap());
139 assert_eq!(u5!(0o25), Unsigned5Bit::try_from(0o25_u8).unwrap());
140 assert_eq!(u5!(0o26), Unsigned5Bit::try_from(0o26_u8).unwrap());
141 assert_eq!(u5!(0o27), Unsigned5Bit::try_from(0o27_u8).unwrap());
142}
143
144#[test]
145fn test_u6() {
146 assert_eq!(u6!(0o00), Unsigned6Bit::try_from(0o00_u8).unwrap());
147 assert_eq!(u6!(0o01), Unsigned6Bit::try_from(0o01_u8).unwrap());
148 assert_eq!(u6!(0o27), Unsigned6Bit::try_from(0o27_u8).unwrap());
149 assert_eq!(u6!(0o30), Unsigned6Bit::try_from(0o30_u8).unwrap());
150 assert_eq!(u6!(0o70), Unsigned6Bit::try_from(0o70_u8).unwrap());
151 assert_eq!(u6!(0o77), Unsigned6Bit::try_from(0o77_u8).unwrap());
152}
153
154#[test]
155fn test_u9() {
156 assert_eq!(u9!(0o750), Unsigned9Bit::try_from(0o750_u16).unwrap());
157}