generational-arena
pointer-utils
generational-arena | pointer-utils | |
---|---|---|
7 | 4 | |
646 | 116 | |
- | - | |
0.0 | 0.0 | |
9 months ago | 12 months ago | |
Rust | Rust | |
Mozilla Public License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
generational-arena
-
Is Rust suitable for representing domain concepts?
In my experience it is often easier to use indexes instead of copying Rc's. If you want to mutate the graph, then look in to slab and generational-arena
-
My thoughts on Rust for game development
Regarding ECS: yes, but in a deflationary sense. The game has entities, stored in something very similar to GenerationalArena, and it has "systems", which are just functions that operate on these entities. The components themselves are just fields of the Entity megastruct. Having an ECS in the narrow sense doesn't really make a lot of sense for this game, because a lot of its rules are dependent on each other, and there's very little chance to extract parallelism. Also, even the current largest levels have less than 10k entities, so simulation performance is not a bottleneck yet.
-
Freeing slice without knowing it’s size
If you cannot inplace construct the slice-dst on heap and your slice is too large to be copied, then I think there are two solutions: - Using Box>, this adds another level of indirection but avoids the copying - Use an arena like slotmap, slab, generational_arena or concurrent_arena to store the Box<[u8]>. It still needs heap allocation, but it allocates in chunks, thus less fragmentation and performs better.
-
Is there an abstract technical name for a map that generates its own keys??
I think this is less of a good fit though: the word "arena" doesn't imply iteration is possible to me. I think arenas also conventionally will reuse previously-released handles (unless you implement akin to a generational arena), so the term might be a bit misleading in that regard.
-
Mutability with Arenas?
Might wanna check out https://github.com/fitzgen/generational-arena / https://github.com/ArnaudValensi/vec-tree/blob/master/tests/tests.rs.
-
A new ProtoBuf generator for Go
This is far from the only arena allocator written in Rust.
From the same author, a zero-unsafe arena allocator: https://github.com/fitzgen/generational-arena
There are many, many arena implementations available with varying characteristics. It's disingenuous to act like Rust requires the author of an arena library to write "unsafe" everywhere.
-
Automatic Struct of Array generation for Rust
If someone wants to adapt it to create computergames, then it would probably be useful to find a way to introduce generational generational indexes
pointer-utils
-
Freeing slice without knowing it’s size
I think you can use slice-dst which embed the size of the array in the heap allocation and returns a thin pointer
-
dyn_struct: create types whose size is determined at runtime using safe Rust
Take a look at these crates: - triomphe for creating Arc reference to unsized struct - pointer-utils also provides similar functionalities compared to your crate
-
Basedrop: A garbage collector for real-time audio in Rust
You might be interested in the unsize crate which provides a pattern to replace/supplement this on stable Rust. I don't think it's very like that CoerceUnsized is stabilized soon. There are a few other no-std crates that have already integrated this approach 1 2 although none with a release yet. It's also gotten some review from the black-magic channel on Discord if you're worried about soundness.
-
Dynamically Aligned Types?
I'm a shill, use my crates; numbers go up make me feel good.
What are some alternatives?
bumpalo - A fast bump allocation arena for Rust
triomphe - Fork of std::sync::Arc with lots of utilities useful for FFI
goprotobuf - Go support for Google's protocol buffers
vec-tree - A safe tree using an arena allocator that allows deletion without suffering from the ABA problem by using generational indices. https://docs.rs/vec-tree/0.1.0/vec_tree/
gapid - Graphics API Debugger
go - The Go programming language
TablaM - The practical relational programing language for data-oriented applications
protobuf-go - Go support for Google's protocol buffers