https://github.com/storycraft/unsized-stack
Fast heterogeneous / unsized stack
https://github.com/storycraft/unsized-stack
Last synced: about 2 months ago
JSON representation
Fast heterogeneous / unsized stack
- Host: GitHub
- URL: https://github.com/storycraft/unsized-stack
- Owner: storycraft
- Created: 2023-07-02T06:56:02.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-07-02T23:59:09.000Z (almost 2 years ago)
- Last Synced: 2025-04-22T22:17:56.251Z (about 2 months ago)
- Language: Rust
- Homepage:
- Size: 51.8 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# UnsizedStack
Store unboxed DST objectsProvides efficient list when the elements don't need to get resorted for DST types.
> NOTE: `UnsizedStack` relies on an unspecified fat pointer representation
## Diagram
Each object is correctly padded.
## Example
Trait object
```rust
use unsized_stack::UnsizedStack;
use std::fmt::Debug;let mut stack = UnsizedStack::::new();
stack.push("str", |item| item as _);
stack.push(1, |item| item as _);
stack.push(28342.2, |item| item as _);
dbg!(stack); // Print stack = ["str", 1, 28342.2]
```str
```rust
use unsized_stack::UnsizedStack;
use std::fmt::Debug;let mut stack = UnsizedStack::::new();
stack.push("str", |item| item as _);
stack.push("asdf", |item| item as _);
stack.push("abcd", |item| item as _);
dbg!(stack); // Print stack = ["str", "asdf", "abcd"]
```slices
```rust
use unsized_stack::UnsizedStack;
use std::fmt::Debug;let mut stack = UnsizedStack::<[i32]>::new();
stack.push([1, 2], |item| item as _);
stack.push([3, 4], |item| item as _);
stack.push([5, 6], |item| item as _);
dbg!(stack); // Print stack = [[1, 2], [3, 4], [5, 6]]
```