Skip to content

Commit

Permalink
Initial work on turning BitColumnMatrix32 into BitColumnMatrix<T>
Browse files Browse the repository at this point in the history
Current Rust 1.45.2 doesn't support this. So need to wait until Rust is improved.
rust-lang/rust#43408
  • Loading branch information
cmcqueen committed Aug 11, 2020
1 parent 17fbb32 commit 77385e8
Showing 1 changed file with 33 additions and 3 deletions.
36 changes: 33 additions & 3 deletions src/bitcolumnmatrix.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,42 @@
use num_traits::{PrimInt, Unsigned, Zero, One};
use std::ops::{BitAnd};


trait BitWidth {
const BIT_WIDTH: usize;
}

impl BitWidth for u128 {
const BIT_WIDTH: usize = 128;
}

impl BitWidth for u64 {
const BIT_WIDTH: usize = 64;
}

impl BitWidth for u32 {
const BIT_WIDTH: usize = 32;
}

impl BitWidth for u16 {
const BIT_WIDTH: usize = 16;
}

impl BitWidth for u8 {
const BIT_WIDTH: usize = 8;
}


#[derive(Clone)]
pub struct BitColumnMatrix32 {
columns: [u32; 32],
pub struct BitColumnMatrix<T>
where T: PrimInt + Unsigned + std::marker::Sized,
{
columns: [T; std::mem::size_of::<T>() * 8],
}

impl BitColumnMatrix32 {
impl<T> BitColumnMatrix<T>
where T: BitWidth,
{
const WIDTH: usize = 32;

pub fn new(init_data: &[u32; 32]) -> BitColumnMatrix32 {
Expand Down

0 comments on commit 77385e8

Please sign in to comment.