Skip to content

MaxoozX/generational_array

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Generational Array

Why to use it

Using a generational array presents two main advantages :

  • When you remove an element from the array and try to access it, the ABA problem is prevented thanks to generations
  • The array will try to allocate the smallest amount of memory by reusing the unused cells in the array.

This module provides a simple interface for working with generational arrays with almost no additionnal runtime complexity compared to a classic vector.

How to use it

The types

This module exposes 4 different types

Name Description
GenerationalIndex Type representing an index in a generational array. It's made of an index (usize) and a generation (usize)
See methods
GenerationalArray Generic type representing the generational array
GenerationalArrayResult Enum used when getting a reference to an item from the generational array
See variants
GenerationalArrayResultMut Enum used when getting a mutable reference to an item from the generational array
See variants

Methods of GenerationalArray

Method Use
new Creates new instance of GenerationalArray
insert Adds an element, takes the value as parameter and returns the index (GenerationalIndex)
remove Removes an element, takes index as parameters and returns a Result<_, &'static str>
get Get a reference to an element, takes index and returns GenerationalArrayResult
get_mut Get a reference to an element, takes index and returns GenerationalArrayResultMut
is_empty Whether the array is empty or not, returns bool
size Returns the size (usize) of the array
used_size Returns the actual number (usize) of not empty cells in the array

GenerationalArrayResult

Variant Meaning
None The current index contains None
OutDated The index's generation doesn't match with the current generation
OutOfBounds The index is out of bounds
Some The value has been found, mutable or not depending whether you called get or get_mut

By Maxooz

About

A small package to work with generational arrays and prevent the ABA problem while reusing unused indexes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages