dst

Crates.iodst
lib.rsdst
version0.1.0
sourcesrc
created_at2021-02-07 18:07:01.198213
updated_at2021-02-07 18:07:01.198213
descriptionData structures for DSTs
homepagehttps://github.com/Wolvereness/dst/
repositoryhttps://github.com/Wolvereness/dst/
max_upload_size
id352023
size38,123
Wesley Wolfe (Wolvereness)

documentation

https://docs.rs/dst

README

Crates.io version docs.rs status Crates.io license Github Tests

This crate is intended to provide data structures that use DSTs (dynamically sized types).

Overview

The goal of this crate is to provide data structures that can store DSTs in a contiguous allocation. Some applications may have a performance benefit for using a contiguous allocation as opposed to multiple pointers.

Currently, the only implementation is a Vec where the DST-tails are slices of the same length.

Usage

Add to dependencies:

[dependencies]
dst = "0.1.0"

Use in the code:

use dst::FixedVec;
fn main() {
    let mut vec = FixedVec::<Option<&str>, usize>::new(4);
    vec.push_default();
    let item = vec.get(0).unwrap();
    assert_eq!(item.value, None);
    assert_eq!(item.tail, [0, 0, 0, 0]);
    
    vec.push(Some("Name"), [1, 2, 3, 4].iter().copied());
    let item = vec.get(1).unwrap();
    assert_eq!(item.value, Some("Name"));
    assert_eq!(item.tail, [1, 2, 3, 4]);
}

Flags

Commit count: 1

cargo fmt