//@compile-flags: -Zmiri-symbolic-alignment-check

use std::mem::size_of;

fn main() {
    let mut a = Params::new();
    a.key_block = [0; BLOCKBYTES];
}

#[repr(C)]
#[derive(Clone)]
#[allow(unused)]
pub struct Params {
    hash_length: u8,
    key_length: u8,
    key_block: [u8; BLOCKBYTES],
    max_leaf_length: u32,
}

pub const OUTBYTES: usize = 8 * size_of::<u64>();
pub const KEYBYTES: usize = 8 * size_of::<u64>();
pub const BLOCKBYTES: usize = 16 * size_of::<u64>();

impl Params {
    pub fn new() -> Self {
        Self {
            hash_length: OUTBYTES as u8,
            key_length: 0,
            key_block: [0; BLOCKBYTES],
            max_leaf_length: 0,
        }
    }
}
