A D language container library using std.experimental.allocator for flexible memory management.
Containers is a D programming language library that provides alternative implementations of common data structures like arrays, lists, and trees. It solves the problem of inflexible memory management in standard containers by integrating with D's experimental allocator system, allowing developers to use custom memory allocation strategies for better performance control.
D language developers who need fine-grained control over memory allocation in their container usage, particularly those working on performance-critical applications or systems with specific memory constraints.
Developers choose this library over Phobos' default containers because it offers full compatibility with D's experimental allocator system, enabling custom memory management strategies while providing familiar container interfaces and often better performance through specialized implementations.
Containers backed by std.experimental.allocator
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Fully integrates with D's std.experimental.allocator module, allowing developers to use any allocator for fine-tuned memory management and performance optimization.
Benchmarks in the README show faster insertion speeds for TTree and SList compared to Phobos equivalents, indicating efficiency improvements for specific use cases.
Includes unique implementations like TTree (a balanced tree for ordered storage) and UnrolledList (reduces overhead by storing multiple elements per node), catering to niche performance needs.
Maintains interfaces similar to Phobos containers, making adoption smoother for developers already accustomed to D's standard library syntax and usage.
Only provides a few container types (DynamicArray, SList, TTree, UnrolledList), lacking common structures like hash maps or double-ended queues, which may require supplementing with other libraries.
Relies on std.experimental.allocator, which is not part of D's stable standard library and could undergo breaking changes, posing risks for long-term project stability.
Requires understanding of D's allocator system to use effectively, adding complexity and initial setup time compared to drop-in Phobos containers.