Crate deferred_vector

Source
Expand description

§Deferred Vector Library

DeferredVec is a Rust library providing a generic, lazily-initialized vector structure. This structure is designed for scenarios where the initialization of a large or resource-intensive vector should be deferred until it’s actually needed.

Developed by Prof. Afonso Miguel - PUCPR, this library is ideal for applications where performance and efficient resource management are critical.

§Features

  • Laziness: The vector is not initialized until it’s explicitly accessed. This lazy initialization is beneficial for performance in cases where the vector might not be used immediately or at all.
  • Flexibility: Works with any type T that implements the Clone trait, allowing for a wide range of applications.
  • Custom Initialization: The vector is initialized using a user-provided function, offering flexibility in how the vector’s contents are determined.

§Usage

To use DeferredVec, define a fetch_function that returns the initial state of the vector when called. The DeferredVec struct can then be instantiated with this function. The vector remains uninitialized (None) until methods like get or len are called, at which point fetch_function is invoked to initialize the vector.

§Examples

Basic usage:

let mut deferred_vector = DeferredVec::new(|| vec![1, 2, 3]);
assert_eq!(deferred_vector.is_deferred(), true);
let initialized_vector = deferred_vector.get();
assert_eq!(deferred_vector.is_deferred(), false);

§Testing

The module includes unit tests to verify the functionality, especially focusing on the lazy initialization and basic vector operations.

§Disclaimer

This code is provided as-is, without warranty. Users should thoroughly test it in their own applications before any production use.

§Author

Prof. Afonso Miguel - PUCPR - Original implementation and documentation.

§License

This project is licensed under the MIT License - see the LICENSE file for details.

Structs§

DeferredVec
A generic struct DeferredVec for lazily initializing a vector.