# const_sizes
[](https://crates.io/crates/const_sizes)
[](https://docs.rs/const_sizes)
友好可读的 2 的幂次常量大小(`power-of-two size constants`),对标 `Linux` 内核 `<linux/sizes.h>` 的 `SZ_*` 宏。
`#![no_std]`、零依赖、纯 `pub const usize`,可在裸机 / 嵌入式 / 内核场景直接使用。
## 功能
写裸机或内核代码时,到处充斥 `0x1000`、`0x10_0000`、`16 * 1024` 这类魔数:
```rust
const KERNEL_HEAP: usize = 16 * 1024 * 1024; // 多少?数 0
const PAGE_SIZE: usize = 0x1000; // 4K?还是别的?
```
换成 `const_sizes` 之后语义自解释、计算在编译期完成、不会写错位数:
```rust
use const_sizes::{SZ_4K, SZ_16M};
const KERNEL_HEAP: usize = SZ_16M;
const PAGE_SIZE: usize = SZ_4K;
```
## 用法
```rust
use const_sizes::{SZ_64, SZ_4K, SZ_2M, SZ_1G};
// 缓存行
#[repr(align(64))]
struct CacheLine([u8; SZ_64]);
// 页大小
const PAGE_SIZE: usize = SZ_4K;
// 大页
const HUGE_PAGE: usize = SZ_2M;
// 用户空间上限
const USER_SPACE_END: usize = SZ_1G;
```