2 个版本 (1 个稳定版)
1.0.0 | 2024年3月19日 |
---|---|
0.1.0 | 2022年10月15日 |
#21 在 #bit-manipulation
每月下载量 41
4KB
const 泛型位界限的辅助特性
#![allow(incomplete_features)]
#![feature(generic_const_exprs)]
use bit_bounds::{IsPowerOf2, usize::*};
struct Buffer<const N: usize> {
inner: [usize; N],
}
impl<const N: usize> Buffer<N>
where
Int<N>: IsPowerOf2
{
pub const fn new() -> Self {
Buffer { inner: [0; N] }
}
}
fn extract_index<const N: usize>(counter: usize) -> usize
where
Int<N>: IsPowerOf2,
Int<N>: BitsAllClear<{ (u32::MAX as usize) << 32 }>,
{
(counter >> 32) & (N - 1)
}
lib.rs
:
const 泛型界限的辅助特性
#![allow(incomplete_features)]
#![feature(generic_const_exprs)]
use bit_bounds::{IsPowerOf2, usize::*};
struct Buffer<const N: usize> {
inner: [usize; N],
}
impl<const N: usize> Buffer<N>
where
Int<N>: IsPowerOf2
{
pub const fn new() -> Self {
Buffer { inner: [0; N] }
}
}
fn extract_index<const N: usize>(counter: usize) -> usize
where
Int<N>: IsPowerOf2,
Int<N>: BitsAllClear<{ (u32::MAX as usize) << 32 }>,
{
(counter >> 32) & (N - 1)
}
依赖项
~3KB