binpack-3d 0.1.0

A high-performance, deterministic 3D bin packing library written in Rust.
Documentation
use binpack_3d::{
    algorithmen::Algorithmen3DBinPackaging,
    bin::Bin,
    items::Item,
    second_algorithmen::SecondAlgorithmen,
    vector::Vector3,
};
use hashbrown::HashSet;

#[test]
fn bin_fix_v2() {
    let bin = Bin::new(1, Vector3::new(1000, 1000, 1000), 100000, 0);
    let item = Item::new(1, Vector3::new(10, 10, 10), 10, 1);
    let mut list = Vec::with_capacity(1000);
    for _ in 0..1000 {
        list.push(item.clone());
    }
    let algorithmen = SecondAlgorithmen::create_algorithmen(list, bin).unwrap();
    let result = algorithmen.calculate().unwrap();
    assert_eq!(1000, result.items.len());
    assert_eq!(0, result.removed_items.len());
    let mut hash_check: HashSet<Vector3<u32>> = HashSet::with_capacity(result.items.len());
    for i in result.items {
        if !hash_check.insert(i.position) {
            panic!("Same corner was used");
        }
    }
}
#[test]
fn bin_variable_v3() {
    let x = || return rand::random_range(0u32..100u32);
    let bin = Bin::new(1, Vector3::new(10000, 10000, 10000), 100000, 0);
    let item = Item::new(1, Vector3::new(x(), x(), x()), 10, 1);
    let mut list = Vec::with_capacity(1000);
    for _ in 0..1000 {
        list.push(item.clone());
    }
    let algorithmen = SecondAlgorithmen::create_algorithmen(list, bin).unwrap();
    let result = algorithmen.calculate().unwrap();
    assert_eq!(1000, result.items.len());
    assert_eq!(0, result.removed_items.len());
    let mut hash_check: HashSet<Vector3<u32>> = HashSet::with_capacity(result.items.len());
    for i in result.items {
        if !hash_check.insert(i.position) {
            panic!("Same corner was used");
        }
    }
}